Problème de link avec une fonction ami
J'ai une classe Parcelle dont voici la définition :
Code:
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
| #ifndef PARCELLE_H
#define PARCELLE_H
#include <iostream>
#include <string>
class Parcelle
{
public:
Parcelle();
Parcelle(std::string section, int numero);
void afficher(std::ostream &out);
friend std::ostream& operator <<( std::ostream&, const Parcelle& );
protected:
std::string pe_section;
int pe_numero;
private:
};
#endif // PARCELLE_H |
Cette classe contient une fonction ami qui me permet d'écrire dans la console.
Le problème est que lorsque je veux lier mon programme il ne me trouve pas cette fonction ami.
Mais que ce passe t il ?
Citation:
obj\Debug\main.o||In function `main':|
I:\cada\main.cpp|10|undefined reference to `operator<<(std::ostream&, Parcelle const&)'|
||=== Build finished: 1 errors, 0 warnings ===|
Je vous met l'implémentation de la classe
Code:
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
| #include "Parcelle.h"
#include <iostream>
/** @brief Parcelle
*
* @todo: document this function
*/
Parcelle::Parcelle()
{
}
/** @brief Parcelle
*
* @todo: document this function
*/
Parcelle::Parcelle(std::string section, int numero) : pe_section(section),pe_numero(numero)
{
}
/** @brief afficher
*
* @todo: document this function
*/
void Parcelle::afficher(std::ostream &out)
{
out<<"Section : "<<pe_section<<" numero : "<<pe_numero<<std::endl;
}
/** @brief opérateur de sortie
*
*
*/
std::ostream& operator<<( std::ostream& out, Parcelle& terrain )
{
terrain.afficher(out) ; // <- Changement ici
return out;
} |
et le main
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <iostream>
#include "Parcelle.h"
using namespace std;
int main()
{
Parcelle azer("AC",1);
cout<<azer<<endl;
return 0;
} |
Je vous remercie pour l'aide précieuse que vous pourrez m'apporter