[Résolu] Methodes virtuelles

Methodes virtuelles [Résolu] - C++ - Programmation

Marsh Posté le 27-12-2003 à 13:12:36    

Salut ! Je vous pose un pb dont j'ai bien du mal de trouver la solution .
 
Ca concerne les méthodes virtuelles et l'héritage.
 
En fait ,si jamais j'écrit le .h suivant :
 

Code :
  1. class A {
  2.     public:
  3.         A(void);
  4.         virtual bool evaluate(void);
  5.         virtual void go(void);
  6. };


Est il alors nécessaire de spécifier des lignes de codes dans le .c associé , pour les méthodes virtuelles ?
 
Mon pb pour le moment c'est que j'ai cette classe A ,  et deux classes B et C qui en héritent .. mais j'ai un pb au linkage .
Les erreurs se rapportent aux objets B.o et C.o (leur compilation ne pose pas de pb) et j'ai une erreur du type :  
B.o (.gnu.linkonce. ..(j'en passe) : In function A::A[not-in-charge]()
undefined reference to `vtable for A`
undefined reference to `typeinfo for A`
C.o (.gnu.linkonce. ..(j'en passe) : In function A::A[not-in-charge]()
undefined reference to `vtable for A`
undefined reference to `typeinfo for A`
 
Merci par avance à l'âme charitable qui saura m'aiguiller.
@+
cali.


Message édité par calimerot le 27-12-2003 à 13:31:55
Reply

Marsh Posté le 27-12-2003 à 13:12:36   

Reply

Marsh Posté le 27-12-2003 à 13:27:04    

virtual bool evaluate(void); >> c'est la déclaration, mais ta fonction virtuelle n'est pas définie
tu peux faire :
 
virtual bool evaluate() = 0; >> virtuelle pure
virtual bool evaluate() {} >> virtuelle triviale
virtual bool evaluate() { cout << "coucou !" << endl; } >> virtuelle avec du code dedans :p
 
(edit : en c++, les (void) deviennent ())


Message édité par blackgoddess le 27-12-2003 à 13:28:12

---------------
-( BlackGoddess )-
Reply

Marsh Posté le 27-12-2003 à 13:31:34    

BlackGoddess a écrit :

virtual bool evaluate(void); >> c'est la déclaration, mais ta fonction virtuelle n'est pas définie
tu peux faire :
 
virtual bool evaluate() = 0; >> virtuelle pure
virtual bool evaluate() {} >> virtuelle triviale
virtual bool evaluate() { cout << "coucou !" << endl; } >> virtuelle avec du code dedans :p
 
(edit : en c++, les (void) deviennent ())


 
Ok , merci , ça marche maintenant . Il me manquait effectivement la définition des méthodes ..mais je ne voyais pas comment la faire.
 
Merci bien .
Cali.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed