2016-04-27 5 views
0

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

+0

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

Antwort

1

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. :)

+0

ist es nicht möglich mit Variadic Vorlagen? Unsere Bibliotheksnutzung ist sehr begrenzt und wir verwenden den C++ 11-Compiler – sach

+0

Nein. Variadic-Vorlagen sind ein Kompilierzeit-Konstrukt, mit dem Sie Klassen-/Funktionsvorlagen mit einer variablen Anzahl von Vorlagenargumenten erstellen können. –