Передача std :: vector из нативного C ++ в управляемый массив в C ++ / CLI и / или C # - PullRequest
1 голос
/ 13 марта 2012

Я пытался найти способ передать std :: vector из собственного кода C ++ в статический метод в управляемом классе C ++ / CLI.Я новичок в C ++ (неуправляемый), и поэтому неудивительно, что мне не повезло с этим.Что мне хотелось бы, так это несколько указателей на то, как std: vector (любого типа, но предпочтительно double или int) можно преобразовать в управляемые массивы C ++ / CLI и / или массивы C #.Возможно, это не может быть сделано, поскольку я вижу только примеры, чтобы сделать обратное (например, C # для родного C ++), например, см. « преобразование System :: array в std :: vector ».Ниже я суммирую свои неудачные попытки.

Я могу передать двойной вектор, такой как

   vector<vector<double> > dblvec

, в метод, определенный в собственном классе C ++ (где класс находится в проекте C ++ / CLI), но не в метод, определенный в классе ref (также в проекте C ++ / CLI).Компилятор жалуется, что метод (в классе ref) не существует (функция-кандидат недоступна).Я думаю, что это как-то связано с вектором> в качестве закрытой переменной (см., Например, C ++ CLI error C3767: функции-кандидаты недоступны ).

Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 13 марта 2012

Да, вы по сути правы относительно причины (нативные типы не являются открытыми вне сборки).И вы не можете легко исправить это, так как шаблонные типы не могут быть обнародованы (даже при использовании прагмы make_public).

Вы можете прочитать следующее для обхода: Лучший обходной путь для ошибки компилятора C2158: make_public не поддерживает собственные типы шаблонов

Удачи!

...