Bon j'ai un problème, je crois que c'est une spécialisation de classe mais je ne suis pas sur.
j'ai une classe VAR et trois classes dérivées : Float,Int,Boolean
Bon, je pense que vous aurez compris à quoi elles servent. Je veux juste implémenter pour l'instant une méthode get, et une méthode set. j'ai fait un essai comme ça :
Code :
- class Var
- {
- template <class T> void setValue(T & val) {};
-
- template <class T> T getValue() {};
- };
- class Int : public Var
- {
- public :
-
- Int (int val) :wValue(val) {}
- void setValue(const int & val) {wValue=val;};
-
- int getValue() {return wValue;};
-
-
- private :
- int wValue;
- };
|
Si je fais ce code :
Int i;
i.setValue(3);
cout << i.getValue() << endl;
ça marche...
le problème c'est qu'en situtation réelle, les var sont stockées dans une pile... du coup quand je les récupère, il me fait une erreur : no matching function for call to `Var::getValue()'
ben ouais pask justement quand ça marche, il sait dans quelle classe on est, donc il appelle la bonne fonction, mais si c'est un var, il ne sait pas laquelle appeler
Alors, y'a moyen de résoudre ça ? ou alors je dois modéliser les classes autrement ? j'ai bien pensé à d'autres méthode genre renvoyer une union, mais ça ne fait vraiment pas très orienté objet ...
Help siouplait !
Message édité par fucky_fuck le 21-03-2004 à 15:50:57