Nano Hash - криптовалюты, майнинг, программирование

&& : нельзя использовать эту косвенность для типа '_Ty'

Я хочу преобразовать std::list <std::string> в std::list<System::String^> и получаю сообщение об ошибке

&& : нельзя использовать эту косвенность для типа '_Ty' с [ _Ty=System::String^ ]

Можно ли конвертировать?

конвертировать.ч

#pragma once

#include <list> 
#include <string>
#include <msclr/marshal.h>
__declspec(dllimport) std::list<std::string> x_browseCan();


__declspec(dllexport) std::list<System::String^> wrap_browse_can();

конвертировать.cpp

#include "pch.h"
#include "cok_main.h"
std::list<System::String^> wrap_browse_can() {
    std::list<std::string> temporary_list;
    std::list<System::String^> object_list;
    temporary_list = x_browseCan();
    for (std::list<std::string>::iterator it = temporary_list.begin(); it != temporary_list.end(); it++) {
        object_list.push_back(msclr::interop::marshal_as<System::String^>(*it));
    }
}

  • Почему вы отметили C#? 24.12.2019
  • Извините, я забыл добавить, я возвращаю список‹System::String^› в программу c# @SᴇM 24.12.2019
  • В этом случае вам нужно преобразовать и строку и список, возвращая System::Collections::Generic::List<System::String^>^. 24.12.2019
  • Я сделал то, что вы написали, и ошибки исчезли, теперь я получаю сообщение об ошибке, которое wrap_browse_can: __declspec(dllexport) cannot be applied to a function wit the __clrcall calling convention @madreflection 24.12.2019
  • Теперь это дубликат stackoverflow.com/questions/54708505/ 24.12.2019
  • @madreflection я сделал, но все равно получаю сообщение об ошибке, что std::wstring is not a valid generic argument wstring подходит для System::Collections::Generic::List<> 24.12.2019

Ответы:


1

Как уже упоминалось @madreflection, я исправил свой код, как показано ниже. Список должен быть System::Collections::Generic::List<System::String^>^ вместо std::list<System::String^>

конвертировать.cpp

#include "pch.h"
#include "cok_main.h"


System::Collections::Generic::List<System::String^>^ wrap_browse_can() {

    std::list<std::string> temporary_list;
    System::Collections::Generic::List<System::String^>^  object_list;
    temporary_list = x_browseCan();

    for (std::list<std::string>::iterator it = temporary_list.begin(); it != temporary_list.end(); it++) {

        std::string asd = *it;
        System::String^ my_string = gcnew System::String(asd.c_str());
        object_list->Add(my_string);
        //object_list.push_back(msclr::interop::marshal_as<System::String^>(asd));

    }
    return object_list;

}

конвертировать.ч

#pragma once

#include <list> 
#include <string>
#include <msclr/marshal.h>
__declspec(dllimport) std::list<std::string> x_browseCan();


__declspec(dllexport) System::Collections::Generic::List<System::String^>^ wrap_browse_can();


24.12.2019
  • Обратите внимание, что List^ — это .NET-версия std::vector. Версия .NET std::list — System::Collections::Generic::LinkedList<T>^. 25.12.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..