hm problem lösbar mit templates
-
Hallo allerseits,
ich habe eine Tempaltes Classe Parameter:
class CParameter{ std::pair<char,T> m_PairParameter; public: CSignalParameter(char, T); }; template <class T> CParameter<T>::CParameter(char nDC, T Parameter){ m_PairParameter.first = nDC; m_PairParameter.second = Parameter; }der 2-te Parameter der pair kann einen string oder einen unsigned short sein
Instanzen der Classe CParameter werden in dem Vector m_theParameters eingespeist
class CParameterContainer { private: std::vector<CParameter<class T>*> m_theParameters; public: bool pushParameter(std::string, char, unsigned short); bool pushParameter(std::string, char, std::string);über die Functionen: pushParameter
die definition der Functionen schaut so aus:
bool CParameterTable::pushSignalParameter(string strSignalName, char nDC, string strParameter){ CParameterContainer<std::string>* theStringParameter = new CParameterContainer<std::string>(nDC,strParameter); m_theParameters.push_back(theStringParameter); return true; }für strings und für unsigned shorts:
bool CParameterTable::pushSignalParameter(string strSignalName, char nDC, unsigned short nParameter){ CParameterContainer<std::string>* theShortParameter = new CParameterContainer<std::string>(nDC,nParameter); m_theParameters.push_back(theShortParameter); return true; }leider meckert der compiler, dass die classe T definiert sein soll bei der declaration von m_theParameters.
-
Du mußt die Containerklasse auch als Template definieren, damit du eine Zuordnung zu den Parametertypen bekommst. (und btw sind CParameter<short> und CParameter<string> zwei völlig verschiedene Typen, die kannst du nicht in einen Vektor packen)
-
ok wenn die CParameter-Classe abstract is, und dann 2 abgeleitete Classen CShortParameter und CStringParameter. Dann die Parameter über Polymorphie in dem Vector einspeisen.
ist lösung mit templates unbrauchbar?
-
darkstar2000 schrieb:
ok wenn die CParameter-Classe abstract is, und dann 2 abgeleitete Classen CShortParameter und CStringParameter. Dann die Parameter über Polymorphie in dem Vector einspeisen.
Ja, das wäre eine Lösung
ist lösung mit templates unbrauchbar?
Für deine Anwendung: JA