Bonsoir à tous,
J'ai besoin d'une petite aide je viens de débuter mon apprentissage en C++ est c'est pas simple. J'essaye de faire de l'héritage avec es méthodes virtuelles pures. Toujours est-il que je me lance et qu'il y a une erreur que je ne comprends pas.
Main.h :
Main.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef MAIN_H_ #define MAIN_H_ #include <iostream> #include "Vehicule.h" #include "Voiture.h" using namespace std; class Main { }; #endif
Vehicule.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "Main.h" int main() { cout << "Gestion d'une flotte de vehicules" << endl; Voiture* v; v = new Voiture; v->test(); //v->addPassenger(); return 0; }
Voiture.h :
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 #ifndef VEHICULE_H_ #define VEHICULE_H_ #include <iostream> using namespace std; class Vehicule { int passager; public: virtual void addPassenger() = 0; }; #endif
Voiture.cpp :
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 VOITURE_H_ #define VOITURE_H_ #include <iostream> #include "Vehicule.h" using namespace std; class Voiture: public Vehicule { public: Voiture(); virtual ~Voiture(); void test(); void addPassenger(); }; #endif
En exécutant ce programme j'obtiens ceci :
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 #include "Voiture.h" Voiture::Voiture() { cout << " voiture" << endl; } Voiture::~Voiture() { // TODO Auto-generated destructor stub } void test() { cout << "TEST OK" << endl; } /* void addPassenger() { cout << "Ajout de passagers" << endl; } */
J'avoue que je ne comprends pas cette erreur de linkage... Un petit coup de pouce et vos conseils sont les bienvenues.Building target: TESTCPP
Invoking: GCC C++ Linker
g++ -o "TESTCPP" ./src/Main.o ./src/Voiture.o
./src/Main.o: In function `main':
/home/workspace/TESTCPP/Debug/../src/Main.cpp:17: undefined reference to `Voiture::test()'
./src/Voiture.o: (.rodata._ZTV7Voiture[vtable for Voiture]+0x10): undefined reference to `Voiture::addPassenger()'
collect2: ld a retourné 1 code d'état d'exécution
make: *** [TESTCPP] Erreur 1
Merci d'avance
Partager