Как создать массив / вектор переменной длины в VC ++ - PullRequest
0 голосов
/ 01 октября 2009

Я пытаюсь создать вектор System :: String ^, я пытался использовать прямой STL-вектор, но vector<String ^> my_vector выдает ошибку C4439 (функция должна иметь соглашение о вызовах __clrcall.

Итак, я добавил __clrcall к своему прототипу функции, и он все еще жаловался на мое объявление vector<String ^>.

Я также читаю страницы MSDN в библиотеке VC ++, но я еще не нашел то, что мне нужно, кто-нибудь там знает, что мне нужно? Спасибо.

1 Ответ

1 голос
/ 01 октября 2009

Вы пытаетесь поставить управляемый объект (строку) под контроль неуправляемого объекта, но управляемая куча может перемещать вещи в памяти, и это проблема для вектора. По сути, вы не можете вставлять управляемые объекты в контейнеры STL, хотя это может быть разрешено в управляемом C ++ с закреплением (я не пробовал) и извлечением из него фактического char *.

Однако .NET предоставляет аналогичные классы, такие как List<T> generic, которые будут делать то же самое для вас, но в управляемом коде. Если вы используете старую версию .NET, посмотрите на что-то вроде ArrayList, Stack или Queue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...