Microsoft (principalmente, Herb Sutter ) recomienda utilizar WinRT con C ++ / CX para mantener WinRT en los límites de la aplicación y mantener el núcleo de la aplicación escrito en ISO C ++ estándar.
He estado escribiendo una aplicación que me gustaría dejar portátil, por lo que mi funcionalidad principal se escribió en C ++ estándar, y ahora estoy intentando escribir un front-end de estilo Metro usando C ++ / CX. Sin embargo, he tenido un pequeño problema con este enfoque. Por ejemplo, si quiero insertar un vector de tipos C ++ definidos por el usuario en un control XAML ListView, tengo que ajustar mi tipo definido por el usuario en un tipo de valor / ref WinRT para que se almacene en un Vector^
. Con este enfoque, inevitablemente me queda envolver una gran parte de mis clases de C ++ con las clases de WinRT.
Esta es la primera vez que intento escribir una aplicación nativa portátil en C ++. ¿Es realmente práctico mantener WinRT a lo largo de los límites como este? ¿De qué otra forma podría manejarse este tipo de núcleo portátil con un límite específico de plataforma?
fuente
Respuestas:
En mi humilde opinión (antiguo programador; trabajo en Microsoft, pero esta es una opinión personal): antes de que pueda responder a esta pregunta, debe responder esta otra pregunta:
¿A dónde se mueve el código? Si se queda con una sola plataforma (en este caso, WinRT), entonces esté cerca de la plataforma, y eso significa usar las abstracciones existentes. Según su ejemplo, su código usaría Vector ^ para coincidir con las necesidades de WinRT.
OTOH, si te mudas a otro lugar (¡VMS es genial!), Entonces los basados en estándares tienen sentido.
Dado que las tres plataformas portátiles más grandes, similares a tabletas en el mercado, usan diferentes lenguajes para tareas de programación comunes, mover el código podría no ser una opción valiosa.
fuente
No tiene que usar C ++ / CX, en su lugar puede usar la WRL ( Biblioteca de tiempo de ejecución de Windows ) que es como las plantillas ATL antiguas, no el C ++ 'simulado' que es C ++ / CX. ¡Es el enfoque de "bajo nivel" de MS para consumir objetos WinRT y es completamente estándar C ++ como solía escribir Grandad!
Puede que no sea tan "agradable" como C ++ / CX, pero eso es una cuestión de opinión: mi opinión personal es que C ++ / CX es el tercer intento en un C ++ extendido, y es un tercer fracaso. Ignóralo y espera que siga el mismo camino que las otras 2 encarnaciones.
fuente