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


Anmelden zum Antworten