Bonjours,
j'ai besoin de creer deux classe heritant l'une de l'autre, la premiere possedant une methode virtuelle. Les classe compile et si je met une methode main vide, je peu meme executer. Mon probleme est que dès que j'entre une commande pour creer mon objet, j'ai une Linker error qui apparait et pas moyen de la corriger...
Voici mon 1er code:
et le second
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
16
17
18
19 #ifndef _EXPRESSION_H #define _EXPRESSION_H #include <iostream> using namespace std; class Expression{ protected: int erreur; public: virtual float getValue(); int getErreur(){ return erreur; } }; #endif
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #ifndef _VALEUR_H #define _VALEUR_H #include <string.h> #include "Expression.cpp" using namespace std; class Valeur:public Expression{ private: float valeur; public: Valeur(string chaine){ int c=0; int deci=1; bool b=false; valeur=0; erreur=0; char ch; while (c<chaine.size()){ ch=chaine[c]; if (ch!=',' && ch!='0' && ch!='1' && ch!='2' && ch!='3' && ch!='4' && ch!='5' && ch!='6' && ch!='7' && ch!='8' && ch!='9'){erreur=1;} if (ch!=','){ valeur=10*valeur+ch-'0'; c++; if (b){deci=deci*10;} }else{ b=true; } } if (erreur==0){valeur=valeur/deci;} }/*Creer un float a partir d'une string*/ Valeur(bool b){ valeur=0; if (b){erreur=1;}else{erreur=0;} } float getValue(){ return valeur; } }; int main(){ Expression* v1=new Valeur("12.3"); } #endif
et l'erreur que j'obtient:
In function 'ZSt17__verify_groupingPKcjRKSs':
[Linker error] undefined reference te 'vtable for Expression'
id returned 1 exit status
[BuildError] [Projet3.exe]Error 1
Merci d'avance pour vos reponse et Bonnes fêtes a tous
[EDIT]et encore dsl pour l'oubli de balise ^^
Partager