Template Klasse in einem Vector speichern
-
Hallo, zu erst einmal das ist mein erster Beitrag!
<schleim> ich finde euer Forum super</schleim>
Also zu meiner Frage:
Ich möchte in meinem Spiel das ich programmiere eine Console einbauen wo ich Variablen verändern kann, die so ähnlich wie in Quake funktioniert ich will aber den OO Weg gehen.
Ich habe eine Klasse CVar wo ich meine Daten speichere, als Varialben typ gibt es int, float,bool, std::stringenum CVarType { CVarInt, CVarBool, CVarString, CVarFloat, }; template <class T> class CVarBase { pulic: void Set(T& Wert); T Get(); CVarBase(string name,CVarType Type,T Defaultwert); string GetName(); private: string m_strName; T m_tVariable; CVarType m_Typ; }
damit kann i verschiedene Variablen von verschiedenen Typen anlegen
z.B CVarstd::string("name",CVarString,"Player") , CVar<int>("xAufloesung",CVarInt,1024)
diese Variablen möchte ich in einem Vector speichern, da meckert aber der Compiler(VS 7.1) rum(std::vector<CVar<void*> >, ich habe mir überlegt das ich vielleicht eine Oberklasse mache z.B CVar von der ich dann CVarBase ableite und der vector dann vom Typ CVar ist. aber hier meckert auch der Compiler rum, ich weiss nicht wie ich hier casten muss.Danke gleich im voraus!!!!!!!!!!!!!
-
Wenn ich dich richtig verstanden habe, liegt das Problem darin das du versuchst in eine Liste vom Typ<T> verschieden Typen einzufügen. Das funktioniert nicht
Du musst bedenken dass Class<int> was anderes als Class<double> ist. Entweder eine Basisklasse schaffen, oder die Listen auf einen Typ beschränken.
-
chr_reisinger schrieb:
ich habe mir überlegt das ich vielleicht eine Oberklasse mache z.B CVar von der ich dann CVarBase ableite und der vector dann vom Typ CVar ist. aber hier meckert auch der Compiler rum
Dann hast du was falsch gemacht
ich weiss nicht wie ich hier casten muss.
am besten garnich
-
Du musst nicht casten.
vielleicht ist ja auch ein boost::any (www.boost.org) für dich interessant.