Instanzen der selben Template-Klasse und verschiedenen Template-Params in einer Liste speichern



  • Weiß da jemand weiter?

    Ich hab ne Klasse, mit der man Optionen zur Compile-Zeit erstellen kann. Dazu gehört die Options-ID und eine variable Anzahl von Parametern verschiedenen Typs, die in einem std::tuple<> abgelegt werden.

    Dann habe ich Klassen(I) auf denen man diese Optionen applizieren kann.

    Dann hab ich Klassen(II), die einen Haufen solcher Klassen(I) bündeln. Und hier will ich so ein Prototyp-Mechanismus bauen, also eine Liste dieser Compile-Time-Optionen und jedes Mal wenn man eine Klasse(I) an die Klasse(II) beifügt, so wird die Optionsliste auf Klasse(I) appliziert.

    Nur kann man keine Listen von Typen unterschiedlichen Template-Parametern erstellen und ich such da nach so einem Weg.

    Eine Möglichkeit wäre folgende: Man macht für die Options-Klasse eine abstrakte Basisklasse (basic_option), ohne Templates und nur eine pure virtuelle Methode, apply() .

    Die Klasse option<> erbt von ihr und implementiert apply() .

    Nun kann ich eine Liste aus lauter basic_option erstellen und beim applizieren auf Klassen(I) rufe ich dann die virtuelle Magie auf.

    Der bestehende Nachteil ist, dass ich die Optionen im Nachhinein nicht mehr ändern kann - doch, ich kann die Liste höchstens leeren und sie mit neuen Werten befüttern.

    Kennt jemand eine bessere Idee? Boost und <=C++14 sind hier willkommen :)


Log in to reply