Microsoft (главным образом, Херб Саттер ) рекомендует при использовании WinRT с C ++ / CX держать WinRT за границами приложения и сохранять ядро приложения написанным в стандарте ISO C ++.
Я писал приложение, которое я хотел бы оставить переносимым, поэтому моя основная функциональность была написана на стандартном C ++, и сейчас я пытаюсь написать для него интерфейс в стиле Metro с использованием C ++ / CX. Однако у меня была небольшая проблема с этим подходом. Например, если я хочу передать вектор пользовательских типов C ++ в элемент управления XAML ListView, я должен обернуть мой пользовательский тип в тип ref / value WinRT, чтобы он был сохранен в Vector^
. При таком подходе мне неизбежно придется обернуть большую часть моих классов C ++ классами WinRT.
Это первый раз, когда я пытался написать переносимое нативное приложение на C ++. Действительно ли практично держать WinRT вдоль таких границ? Как еще можно обрабатывать переносное ядро такого типа с определенной платформой границей?