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

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
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
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
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
 
#include <string>
#include "SAirport.h"
 
SAirport::SAirport( std::string n )
{
    name = n ;
}
 
SAirport::~SAirport() {}
 
std::string& SAirport::getName() const
{
    return name ;
}
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
 
#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 ;
}
Je code sous dev c++ version 4.9.9.2 sous windows XP sp2

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 !