template Container
-
Hi,
gibt es eine Möglichkeit, in einem Container durch eine Template-Klasse instanzierte Objekte mit unterschiedlichen Template-Parametern abzulegen?
In etwa so:
template<class T> class c { T m_val; }; ... c<int> o1; c<char> o2; list<cVarset<???>> l; l.push_back(o1); l.push_back(o2);Alternative Vorschläge die dasselbe leisten, sind natürlich auch willkommen. Ziel ist, einen Container mit Objekten von unterschiedlichem Typ zu haben.
Ich möchte, wenn möglich, keine Liste mit Zeigern auf abstrakte Basisklassenobjekte verwenden.
-
du könntest boost::any verwenden
-
Das ist eine Möglichkeit. Es darf jedoch nur die STL verwendet werden.
-
Hi,
unterschiedliche Templateargumente => unterschiedliche Typen => geht nicht.
Letztlich bleiben Dir nur "wrapper-Konstrukte" oder Laufzeit-Polymorphie über Basisklassenpointer.Gruß,
Simon2.
-
unterschiedliche Templateargumente => unterschiedliche Typen => geht nicht.
Letztlich bleiben Dir nur "wrapper-Konstrukte" oder Laufzeit-Polymorphie über Basisklassenpointer.So etwas habe ich befürchtet.
Trotzdem Danke.
-
Hi,
ach, sei froh, dass es nicht geht ... spart Dir eine Menge Ärger.

Gruß,
Simon2.
-
natürlich geht das. erstelle eine basisklasse ohne templates
alle template-klassen leiten von dieser ab.
dann kannst du pointer der basisklasse in der liste verwalten.
-
matimatiker schrieb:
natürlich geht das. erstelle eine basisklasse ohne templates
alle template-klassen leiten von dieser ab.
dann kannst du pointer der basisklasse in der liste verwalten.Zwar funktioniert Dein Vorschlag (weswegen ich den auch schon oben genannt habe) ... aber er passt nicht zu den Anforderungen des OPs.

Er möchte explizit Compiletime-Polymorphie.Ergo: Nein, das geht nicht.
Gruß,
Simon2.