Witam,
mam klase oparta na szablonach:
Variable<T>
oraz klase Variables, ktora zawiera 5 map:
map<string, int> id;
map<int, int> type;
map<int, Variable<int> > intVariables;
map<int, Variable<bool> > boolVariables;
map<int, Variable<float> > floatVariables;
mapa <string, int> id przechowuje nazwe zmiennej i jej id,
mapa type<int, int> type przechowuje id obiektu Variable<T> i jego typ:
const static int UNKNOWN = -1;
const static int INT = 0;
const static int BOOL = 1;
const static int FLOAT = 2;
pozostale 3 mapy przechowuja id obiektu Variable<T>, ktore jest unikalne, oraz ta zmienna.
Chcialbym napisac metode klasy Variables, ktora zwroci mi obiekt klasy Variable<T> podajac id jako argument.
Ponizsza metoda nie dziala:
template <typename T>
Variable<T> get(string variables_name) {
switch(type[id[variables_name]]) {
case Variable<int>::INT:
return intVariables[id[variables_name]];
case Variable<int>::BOOL:
return boolVariables[id[variables_name]];
case Variable<int>::FLOAT:
return floatVariables[id[variables_name]];
default: return 0;
}
}
Otrzymuje taki błąd:
error C2783: 'Variable<T> Variables::get(std::string)' : could not deduce template argument for 'T'
Dlatego chcialbym zapytac jak powinno sie (o ile to mozliwe) rozwiazac ten problem.
Pozdrawiam serdecznie