Microsoft (głównie Herb Sutter ) zaleca używanie WinRT z C ++ / CX, aby utrzymać WinRT na granicy aplikacji i zachować rdzeń aplikacji napisany w standardowym ISO C ++.
Piszę aplikację, którą chciałbym pozostawić przenośną, więc moja podstawowa funkcjonalność została napisana w standardowym C ++, a teraz próbuję napisać dla niej interfejs w stylu Metro przy użyciu C ++ / CX. Miałem jednak pewien problem z tym podejściem. Na przykład, jeśli chcę wcisnąć wektor typów C ++ zdefiniowanych przez użytkownika do kontrolki XAML ListView, muszę zawinąć mój typ zdefiniowany przez użytkownika w typ wartości referencyjnej / wartości WinRT, aby mógł zostać zapisany w pliku Vector^
. Dzięki takiemu podejściu nieuchronnie pozostawiam owijanie dużej części moich klas C ++ klasami WinRT.
Po raz pierwszy próbuję napisać przenośną natywną aplikację w C ++. Czy naprawdę praktyczne jest utrzymywanie WinRT wzdłuż takich granic? Jak inaczej można poradzić sobie z tym rodzajem przenośnego rdzenia z granicami specyficznymi dla platformy?