C++/cx передавая структуру значений по ссылке
"Если у вас есть тип значения в качестве параметра функции или метода, он обычно передается по значению. Для более крупных объектов это может вызвать проблемы с производительностью. В Visual Studio2013 и более ранних версиях типы значений в C++/CX всегда передавались по значению. В Visual Studio 2015 и более поздних версиях вы можете передавать типы значений по ссылке или по значению."
Это не сработало для меня, при использовании value_struct& в сигнатуре функции компилятор выдавал:
Ошибка C3987 "Установить": подпись открытого члена содержит собственный тип value_struct&... Работает без ссылки, Visual Studio 2015
Что мне не хватает?
1 ответ
Я смог заставить это работать так:
public interface class MyDelegate {
void MyDelegateMethod(Platform::String^ str,
Windows::Foundation::Point *point);
}
.. и в реализации делегата C#:
public void MyDelegateMethod(string str, out Point p) { ... }
Это упомянуто на странице MS об этом материале ( https://msdn.microsoft.com/en-us/library/hh699861.aspx):
Вы также можете использовать символ указателя (*) для передачи типа значения по ссылке. Поведение в отношении вызывающих в других языках такое же (вызывающие в C# используют ключевое слово ref), но в методе тип является указателем на тип значения.