Передача ref или указателя на управляемый тип в качестве аргумента в C ++. Net - PullRequest
0 голосов
/ 25 сентября 2008

Я действительно озадачен этим - я знаю, как это сделать в VB, неуправляемых C ++ и C #, но по какой-то причине я не могу принять переменную ref управляемого типа в C ++. Я уверен, что есть простой ответ, на самом деле - но вот эквивалент C #:

myClass.myFunction (ref variableChangedByfunction);

Я пробовал указатели C ++ - без кубиков. Я пробовал ключевые слова ref. Нет кости. Я попробовал ключевое слово [out]. Не сработало.

Я также не могу найти документацию, которая бы четко объясняла мою проблему.

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 25 сентября 2008

Оказывается, в объявлении функции нужно использовать% после имени параметра:

bool Importer :: GetBodyChunk (строка ^% BodyText, строка ^% ChunkText)

И затем вы передаете переменную в обычном режиме.

2 голосов
/ 25 сентября 2008

Используйте ^ вместо *

1 голос
/ 17 февраля 2010

Просто чтобы было немного понятнее:

Параметры ссылочных типов (например, System :: String) должны обозначаться ^ в более новом синтаксисе C ++ / CLI. Это говорит компилятору, что параметр является дескриптором объекта GC.

Если вам нужна ссылка для отслеживания (например, с ref или out в C #), вам также необходимо добавить %.

И вот вам подсказка: мне часто бывает полезно использовать .NET Reflector для просмотра существующих сборок и переключения на стиль кода C ++. Это дает хорошее представление об использовании атрибутов для взаимодействия между различными языками .net.

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