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), но в методе тип является указателем на тип значения.

Другие вопросы по тегам