Bonjour a tous !
Je vous explique mon problème.
J'ai une classe virtuel nommé Airport. Je la derive en SAirport.
Dans mon fichier SAirport.cpp il y a l'implémentation de ma classe. Enfin le fichier main_airplaine.cpp me sert à tester ma classe.
Voici le code :
Classe virtuel Airport.h
La classe derivée SAirport.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 __AIRPORT #define __AIRPORT #include <string> class Airport { public: /** * @return The name of the airport. */ virtual std::string& getName() const = 0; }; #endif
Mon fichier SAirport.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
20
21
22
23
24
25
26
27 #ifndef __SAIRPORT #define __SAIRPORT #include <string> #include "Airport.h" class SAirport : public Airport { public: SAirport( std::string n ) ; ~SAirport() ; /** * @return The name of the airport. */ std::string& getName() const ; private: std::string name ; }; #endif
Le fichier main pour le test de la classe
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 #include <string> #include "SAirport.h" SAirport::SAirport( std::string n ) { name = n ; } SAirport::~SAirport() {} std::string& SAirport::getName() const { return name ; }
Je code sous dev c++ version 4.9.9.2 sous windows XP sp2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "SAirport.h" #include <iostream> using namespace std ; int main(void) { Airport* Paris = new SAirport("Paris") ; cout << "Nom : " << Paris->getName() << "\n" ; system("PAUSE" ) ; return 0 ; }
Mon problème est que le compilateur me met ceci comme erreur
In member function `virtual std::string& SAirport::getName() const':
ligne 13 invalid initialization of reference of type 'std::string&' from expression of type 'const std::string'
[Build Error] ["SAirport.o"] Error 1
Je pense que cela vient du fait que la fonction getName renvoie une référence ( car tout compile impec quand on enleve la référence ) sur une string mais je ne voi pourquoi.
Merci d'avance de bien vouloir eclairer ma lanterne !
Partager