Bonjour,

Je souhaiterai définir un opérateur<< pour pourvoir afficher celle-ci plus facilement dans ma classe suivante :

fichier : Premier.hpp
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
 
#include <string>
#include <cstring>
#include <iostream>
#include <new>
using namespace std;
 
class Premiere
{
private:
	char * nom;
	int nom_size;
        int age;
	enum { AGE_DEFAULT=18};
 
public :
		Premiere(); //Constructeur par defaut
		Premiere(char *,int); //Constructeur n°2
		Premiere(const Premiere&); // Constructeur de recopie
		virtual ~Premiere(); //Destructeur
		Premiere& operator=(const Premiere&); //Opérateur d'affectation
		int getAge();
		char * getNom();
};
inline std::ostream& operator<<(std::ostream&,const Premiere&);
J'ai implémenté les méthodes dans un fichier Premier.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
 
[...]
int Premiere::getAge()
{
	return this->age;
}
char * Premiere::getNom()
{
	return this->nom;
}
//ensuite l'opérateur <<
inline std::ostream& operator<<(std::ostream& os, const Premiere& p)
{
	os << p.getAge();
	return os;
}
Mais le compilateur me dis :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Premier.cpp:57: error: no matching function for call to `Premiere::getAge() const'
Je ne comprends pas pkoi il me dis ça !

En effet quand je change

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
int Premiere::getAge(); en int Premiere::getAge() const;
Tout se passe bien !

Pourquoi dois-je mettre const à la fin de la fonction et quelle est sa signification ?

Merci d'avance pour vos réponses.