передавать объекты из C # в C ++, получая "не может использовать эту косвенность"? - PullRequest
1 голос
/ 23 марта 2012

У меня есть эта функция в C ++:

struct MyObject
{
}

testAlgorithm(array<String^>^ algorithms, MyObject^ myObject)

Я получил эту проблему, жалуясь на MyObject:

Ошибка C3699: '^': не могу использовать это косвенноевведите 'MyObject'

Но это не так с array<String^>^

Почему это так и как это исправить?

В другой ситуации, если ясделать это:

testAlgorithm(array<String^>^ algorithms, MyObject myObject)

Затем в C # мне нужно позвонить:

testAlgorithm(string[] algorithms, MyObject *myObject);

Я создаю MyObject в C # и объявляю его, но как передать его в testAlgorithm как:*myObject в C #?

Заранее спасибо.

1 Ответ

2 голосов
/ 23 марта 2012

Вы не можете использовать ^ на MyObject, потому что это не управляемый класс. Чтобы объявить его как управляемую структуру (которая, кстати, будет скопирована, если она будет передана в качестве параметра), вам нужно будет использовать value struct вместо struct.

Если вы хотите, чтобы ваш объект передавался как ссылка (без копирования, что, вероятно, вам и нужно), вы должны объявить его как ref class.

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