Méthode virtuelle pure undefined
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 :
Code:
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 |
Main.cpp :
Code:
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;
} |
Vehicule.h :
Code:
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.h :
Code:
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 |
Voiture.cpp :
Code:
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;
}
*/ |
En exécutant ce programme j'obtiens ceci :
Citation:
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
J'avoue que je ne comprends pas cette erreur de linkage... Un petit coup de pouce et vos conseils sont les bienvenues.
Merci d'avance