Ist es möglich, Objekte von Strukturen zu erstellen und die Felder zu füllen, wenn Sie eine Liste der Strukturnamen haben und Feldwerte? Angenommen, ich muss den Eintrag aus der (JSON) -Datei lesen und meine Strukturen auffüllen. Ich habe Wert struct Namen und Werte, aber ich möchte so codieren, dass Code alle Strukturen und füllen Sie die In-Memory-Daten. mag wierd klingen, aber gibt es einen Weg?Ist es möglich, Objekte von Strukturen programmatisch zu erstellen und die Felder zu füllen, wenn Sie eine Liste von Strukturnamen und Feldwerten haben
Antwort
Nein. Die Sprachfunktion, die Sie suchen, heißt Reflexion, und C++ hat es nicht.
Sie könnten stattdessen eine std::map<std::string, SomeType>
aufbauen? Wenn sich SomeType
je nach Feld unterscheidet, können Sie mit einer boost::variant
eine beliebige Anzahl von Typen zu einem beliebigen Zeitpunkt speichern (es handelt sich im Grunde um eine markierte Union).
Oder Sie könnten zu Python wechseln. :)
ist es nicht möglich mit Variadic Vorlagen? Unsere Bibliotheksnutzung ist sehr begrenzt und wir verwenden den C++ 11-Compiler – sach
Nein. Variadic-Vorlagen sind ein Kompilierzeit-Konstrukt, mit dem Sie Klassen-/Funktionsvorlagen mit einer variablen Anzahl von Vorlagenargumenten erstellen können. –
Sie können es nicht mit einer 'struct' tun, aber Sie können eine solche Datenstruktur mit benutzerdefinierten Typen erstellen. Es gibt eine Reihe von 'json' Bibliotheken, die das für Sie tun. – Galik