Liste von untypisierter Templateklasse erzeugen?
-
Hallo,
ich habe eine Klasse Property, diese ist mit einem Typen-Template versehen.
template <typename T> class Property { ... }
In der Anwendung / der Settings-Klasse wird sie dann auf eine Typ festgelegt.
Property<double> FontSize;
Nun möchte ich eine Liste erzeugen, in der ich die Referenzen aller zu serialisierender Property<T> lege.
td::vector<Property<T>> props;
Dann könnte ich in der save-Funktion die Liste durchlaufen und alle enthaltenen Property's speichern oder laden.
wie kann ich eine solche generische Liste/vector erstellen?
Oder kann ich aus einer Klasse alle Members des Typs Protery<T> auslesen?Beste Grüße
Mario
-
Das geht so nicht direkt, du brauchst irgendeine Art von Indirektion. So Richtung Type Erasure oder std::function (ist an sich über Type Erasure gelöst) zum Laden/Speichern.
Oder man macht es z.B. über ein std::variant, und schreibt Visitoren, die laden/speichern. Und ein Property<T> könnte davon ableiten oder das wrappen.
-
Hallo Mechanics,
jup, hab ich gemacht, eine PropertyBase und von der die Property<T> abgeleitet.
Die PropertyBase kommt in den vector.Mal sehen, ich melde mich wenn es funzt.
Beste Grüße
Mario