Меня это действительно сбивает с толку - я знаю, как это сделать в VB, неуправляемом C++ и C#, но по какой-то причине я не могу принять переменную ref управляемого типа в C++. Я уверен, что на самом деле есть простой ответ, но вот эквивалент C#:
myClass.myFunction(ref variableChangedByfunction);
Я пробовал указатели C++ - без кубиков. Я пробовал ключевые слова ref. Никаких кубиков. Я пробовал ключевое слово [out]. Не сработало.
Я также не могу найти никакой документации, которая четко объясняет мою проблему.





Используйте ^ вместо *
...О чувак. Вы имеете в виду переменную, которую я передаю. Я даже не думал об этом, несмотря на то, что хорошо знал об этом операторе. Дай мне попробовать. Спасибо!
Оказывается, в объявлении функции вам нужно использовать% после имени параметра:
bool Importer :: GetBodyChunk (Строка ^% BodyText, Строка ^% ChunkText)
И затем вы передаете переменную обычным образом.
Чтобы было немного понятнее:
Параметры ссылочных типов (например, System :: String) должны быть обозначены ^ в новом синтаксисе C++ / CLI. Это сообщает компилятору, что параметр является дескриптором объекта GC.
Если вам нужна ссылка для отслеживания (например, ref или out в C#), вам также необходимо добавить %.
И вот совет: я часто нахожу полезным использовать .NET Reflector для просмотра существующих сборок и переключения на стиль кода C++. Это дает хорошее представление об использовании атрибутов для взаимодействия между разными языками .net.
Я использовал ^ - хотя, похоже, он не передает ссылку. Если я изменяю содержимое переменной, оно не отражается в переменной, которую я передал (по крайней мере, в соответствии с моим окном просмотра).