Microsoft (hauptsächlich Herb Sutter ) empfiehlt bei Verwendung von WinRT mit C ++ / CX, WinRT an den Grenzen der Anwendung zu belassen und den Kern der Anwendung in Standard-ISO-C ++ zu belassen.
Ich habe eine Anwendung geschrieben, die ich portabel lassen möchte, daher wurde meine Kernfunktionalität in Standard-C ++ geschrieben, und ich versuche jetzt, ein Metro-ähnliches Front-End dafür mit C ++ / CX zu schreiben. Ich hatte jedoch ein kleines Problem mit diesem Ansatz. Wenn ich zum Beispiel einen Vektor mit benutzerdefinierten C ++ - Typen in ein XAML-ListView-Steuerelement verschieben möchte, muss ich meinen benutzerdefinierten Typ in einen WinRT-Referenz- / Werttyp einschließen, damit er in einem gespeichert wird Vector^
. Bei diesem Ansatz muss ich zwangsläufig einen großen Teil meiner C ++ - Klassen mit WinRT-Klassen umbrechen.
Dies ist das erste Mal, dass ich versucht habe, eine portable native Anwendung in C ++ zu schreiben. Ist es wirklich praktisch, WinRT an diesen Grenzen zu halten? Wie sonst könnte ein solcher tragbarer Kern mit einer plattformspezifischen Grenze gehandhabt werden?