A Microsoft (principalmente, Herb Sutter ) recomenda ao usar o WinRT com C ++ / CX para manter o WinRT nos limites do aplicativo e manter o núcleo do aplicativo escrito no padrão ISO C ++.
Como eu escrevi um aplicativo que gostaria de deixar portátil, minha funcionalidade principal foi escrita em C ++ padrão e agora estou tentando escrever um front end no estilo Metro para ele usando C ++ / CX. No entanto, tive um problema com essa abordagem. Por exemplo, se eu quiser enviar por push um vetor de tipos C ++ definidos pelo usuário para um controle XAML ListView, preciso envolver meu tipo definido pelo usuário em um tipo de ref / value do WinRT para que ele seja armazenado em a Vector^
. Com essa abordagem, inevitavelmente fico envolvida em grande parte das minhas classes C ++ nas classes WinRT.
Esta é a primeira vez que tentei escrever um aplicativo nativo portátil em C ++. É realmente prático manter o WinRT dentro dos limites como este? De que outra forma esse tipo de núcleo portátil com um limite específico de plataforma pode ser tratado?