OVH Cloud OVH Cloud

pb création de classe

1 réponse
Avatar
M
j'essaie de créer la classe suivante :
class chaine
{
private: //Elements privés
int longueur;
char *s;

public:
chaine(); //Constructeur par défaut
chaine(const char *); //Constructeur à partir d'une chaine
chaine(const chaine &); //Constructeur par recopie
~chaine(); //Destructeur

//Surcharge de l'opérateur =
chaine& operator = (const chaine &);
chaine& operator = (const char *);

//Surcharge des opérateurs + et -
friend chaine operator + (const chaine & ,const chaine &);
friend chaine operator - (const chaine & ,const chaine &);

//Surcharge des opérateurs d'entrée/sortie
friend chaine operator << (ostream &, const chaine &);
friend chaine operator >> (istream &, chaine &);

//Affichage
void affiche(const char *);

//Lecture
void lireChaine();

//Autres fonctions
int longueurChaine();
void inverse();
int position(char *);
int nbreMots();
};

en voulant surcharge l'opérateur de sortie de la sorte
//Surcharge des opérateus d'entrées/sorties
ostream& operator << (ostream & ostr, const chaine & c)
{
ostr<<c.s;
return ostr;
}
G un message d'erreur qui est le suivant :
Compiling...
chaine.cpp
error C2556: 'class ostream &__cdecl operator <<(class ostream &,const class
chaine &)' : overloaded function differs only by return type from 'class
chaine __cdecl opera
tor <<(class ostream &,const class chaine &)'
see declaration of '<<'
error C2040: '<<' : 'class ostream &(class ostream &,const class chaine &)'
differs in levels of indirection from 'class chaine (class ostream &,const
class chaine &)'
Error executing cl.exe.

chaine.obj - 2 error(s), 0 warning(s)

Je vois pas du tout d'ou vient l'eereur. Une idée ??
Merci par avance

1 réponse

Avatar
M
G trouvé en fait mon erreur
friend chaine operator << (ostream &, const chaine &);
friend chaine operator >> (istream &, chaine &);

J'aurais dû écrire
friend ostream& operator << (ostream &, const chaine &);
friend istream& operator >> (istream &, chaine &);

Bonne journée à tous
"" a écrit dans le message de news:
bj3rjo$o7r$
j'essaie de créer la classe suivante :
class chaine
{
private: //Elements privés
int longueur;
char *s;

public:
chaine(); //Constructeur par défaut
chaine(const char *); //Constructeur à partir d'une chaine
chaine(const chaine &); //Constructeur par recopie
~chaine(); //Destructeur

//Surcharge de l'opérateur > chaine& operator = (const chaine &);
chaine& operator = (const char *);

//Surcharge des opérateurs + et -
friend chaine operator + (const chaine & ,const chaine &);
friend chaine operator - (const chaine & ,const chaine &);

//Surcharge des opérateurs d'entrée/sortie
friend chaine operator << (ostream &, const chaine &);
friend chaine operator >> (istream &, chaine &);

//Affichage
void affiche(const char *);

//Lecture
void lireChaine();

//Autres fonctions
int longueurChaine();
void inverse();
int position(char *);
int nbreMots();
};

en voulant surcharge l'opérateur de sortie de la sorte
//Surcharge des opérateus d'entrées/sorties
ostream& operator << (ostream & ostr, const chaine & c)
{
ostr<<c.s;
return ostr;
}
G un message d'erreur qui est le suivant :
Compiling...
chaine.cpp
error C2556: 'class ostream &__cdecl operator <<(class ostream &,const
class

chaine &)' : overloaded function differs only by return type from 'class
chaine __cdecl opera
tor <<(class ostream &,const class chaine &)'
see declaration of '<<'
error C2040: '<<' : 'class ostream &(class ostream &,const class chaine
&)'

differs in levels of indirection from 'class chaine (class ostream &,const
class chaine &)'
Error executing cl.exe.

chaine.obj - 2 error(s), 0 warning(s)

Je vois pas du tout d'ou vient l'eereur. Une idée ??
Merci par avance