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