Bonjour,
Je souhaiterai définir un opérateur<< pour pourvoir afficher celle-ci plus facilement dans ma classe suivante :
fichier : Premier.hpp
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 :
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 :
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
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.
Partager