Bonjour tout le monde
donc voila je suis entrain de faire un mini interpréteur SQL en C++ et j'ai une classe abstraite Valeur
et j'ai 3 classes qui dérivent de cette classe de base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class Valeur { public: Valeur(){}; ~Valeur(){}; virtual bool operator< (const Valeur& v) = 0; virtual bool operator== (const Valeur& v) = 0; virtual bool operator!= (const Valeur& v) = 0; };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class INTEGER : public Valeur { friend ostream& operator<<(ostream& stream,INTEGER& Int); private: int laValeur; public: INTEGER(); ~INTEGER(); INTEGER(int v); INTEGER(const INTEGER& v); bool operator< (const Valeur& v); bool operator== (const Valeur& v); bool operator!= (const Valeur& v); int getValeur() const; };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class FL : public Valeur { friend ostream& operator<<(ostream& stream,FL& Fl); private: float laValeur; public: FL(); FL(float v); FL(const FL& v); ~FL(); virtual bool operator< (const Valeur& v); virtual bool operator== (const Valeur& v); virtual bool operator!= (const Valeur& v); float getValeur() const; };et voila un main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class STRING : public Valeur { friend ostream& operator<<(ostream& stream,STRING& Str); private: string laValeur; public: STRING(); STRING(string v); STRING(const STRING& v); ~STRING(); bool operator< (const Valeur& v); bool operator== (const Valeur& v); bool operator!= (const Valeur& v); string getValeur(); };
le problème c'est que le compilateur m'affiche une erreur comme quoi"udefined identifier getValeur()"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int main() { Valeur* val1[3]; val1[0] = new STRING("HIMADI"); val1[1] = new INTEGER(27); val1[2] = new FL(300.35); for(int i = 0 ; i < 3 ; i++) { cout << val1[i]->getValeur() << endl; } }![]()
est ce que cela veut dire que pour utiliser du polymorphisme en C++ on ne peut que redéfinir les méthodes dans la classe de base et dans ce cas on n'a pas le droit de définir d'autres méthodes supplémentaire ce qui me semble un peu bizard, ou bien est ce qu'il y a quelque chose qui m'échape??
merci pour votre aide et soutien
Partager