begin process at 2012 05 30 04:38:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Surcharge d'operateur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Surcharge d'operateur

lundi 28 juillet 2003 à 22:27:28 | Surcharge d'operateur

AngeloVivaldi

Salut, je voudrai redefinir cout dans de iostream.h pour qu'il affiche un membre de ma class au lieu d'afficher l'adresse de l'objet :

Par exemple, pour une class X, j'ai écrit pour redéfinir l'opérateur :

ostream operator<<(X p)
{
cout << X.membre;
}

pour que lorsque j'écrit :

X c;
cout << c;

Cela affiche le membre. Mais je n'y arrive pas, quelqu'un peut m'aider ???
Merci !
lundi 28 juillet 2003 à 22:37:27 | Re : Surcharge d'operateur

tcok

Membre Club

dans ta classe X,

declaration :
friend ostream& operator<<(ostream& ostr, const &X c)

implementation :
ostream& operator<<(ostream& thestream, const &X c)
{
thestream << c.membre;
return thestream;
}

-------------------------------
Réponse au message :
-------------------------------

> Salut, je voudrai redefinir cout dans de iostream.h pour qu'il affiche un membre de ma class au lieu d'afficher l'adresse de l'objet :
>
> Par exemple, pour une class X, j'ai écrit pour redéfinir l'opérateur :
>
> ostream operator<<(X p)
> {
> cout << X.membre;
> }
>
> pour que lorsque j'écrit :
>
> X c;
> cout << c;
>
> Cela affiche le membre. Mais je n'y arrive pas, quelqu'un peut m'aider ???
> Merci !
mardi 29 juillet 2003 à 01:58:55 | Re : Surcharge d'operateur

AngeloVivaldi

Il y a 9 erreur lors de la compilation avec ta méthode, et toutes dans ta fonction :

b.cpp(29) : error C2146: syntax error : missing ',' before identifier 'c'
b.cpp(29) : error C2061: syntax error : identifier 'c'
b.cpp(30) : error C2143: syntax error : missing ';' before 'private'
b.cpp(36) : error C2039: '<<' : is not a member of 'Tin'
b.cpp(4) : see declaration of 'Tin'
b.cpp(36) : error C2146: syntax error : missing ',' before identifier 'c'
b.cpp(36) : error C2061: syntax error : identifier 'c'
b.cpp(38) : error C2065: 'c' : undeclared identifier
b.cpp(38) : error C2228: left of '.Str' must have class/struct/union type
b.cpp(46) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class Tin' (or there is no acceptable conversion)


-------------------------------
Réponse au message :
-------------------------------

>
> dans ta classe X,
>
> declaration :
> friend ostream& operator<<(ostream& ostr, const &X c)
>
> implementation :
> ostream& operator<<(ostream& thestream, const &X c)
> {
> thestream << c.membre;
> return thestream;
> }
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut, je voudrai redefinir cout dans de iostream.h pour qu'il affiche un membre de ma class au lieu d'afficher l'adresse de l'objet :
> >
> > Par exemple, pour une class X, j'ai écrit pour redéfinir l'opérateur :
> >
> > ostream operator<<(X p)
> > {
> > cout << X.membre;
> > }
> >
> > pour que lorsque j'écrit :
> >
> > X c;
> > cout << c;
> >
> > Cela affiche le membre. Mais je n'y arrive pas, quelqu'un peut m'aider ???
> > Merci !
>
mardi 29 juillet 2003 à 14:15:46 | Re : Surcharge d'operateur

tcok

Membre Club
voici un petit exemple vite fait qui compile tres bien chez moi ...


#include "stdafx.h"
#include <iostream>

#define cout std::cout

class Test
{
public:
Test() : membre(0) {};
virtual ~Test() {};

friend std::ostream& operator<<(std::ostream& ostr, const Test &c);

int membre;
};

std::ostream& operator<<(std::ostream& thestream, const Test &c)
{
thestream << c.membre;
return thestream;
}

int main(int argc, char* argv[])
{
Test essai;

cout << essai << std::endl;
cout << "ok" << std::endl;
return 0;
}


@+ tcok
-------------------------------
Réponse au message :
-------------------------------

> Il y a 9 erreur lors de la compilation avec ta méthode, et toutes dans ta fonction :
>
> b.cpp(29) : error C2146: syntax error : missing ',' before identifier 'c'
> b.cpp(29) : error C2061: syntax error : identifier 'c'
> b.cpp(30) : error C2143: syntax error : missing ';' before 'private'
> b.cpp(36) : error C2039: '<<' : is not a member of 'Tin'
> b.cpp(4) : see declaration of 'Tin'
> b.cpp(36) : error C2146: syntax error : missing ',' before identifier 'c'
> b.cpp(36) : error C2061: syntax error : identifier 'c'
> b.cpp(38) : error C2065: 'c' : undeclared identifier
> b.cpp(38) : error C2228: left of '.Str' must have class/struct/union type
> b.cpp(46) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class Tin' (or there is no acceptable conversion)
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> > dans ta classe X,
> >
> > declaration :
> > friend ostream& operator<<(ostream& ostr, const &X c)
> >
> > implementation :
> > ostream& operator<<(ostream& thestream, const &X c)
> > {
> > thestream << c.membre;
> > return thestream;
> > }
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Salut, je voudrai redefinir cout dans de iostream.h pour qu'il affiche un membre de ma class au lieu d'afficher l'adresse de l'objet :
> > >
> > > Par exemple, pour une class X, j'ai écrit pour redéfinir l'opérateur :
> > >
> > > ostream operator<<(X p)
> > > {
> > > cout << X.membre;
> > > }
> > >
> > > pour que lorsque j'écrit :
> > >
> > > X c;
> > > cout << c;
> > >
> > > Cela affiche le membre. Mais je n'y arrive pas, quelqu'un peut m'aider ???
> > > Merci !
> >
>


Cette discussion est classée dans : affiche, membre, cout, surcharge, operateur


Répondre à ce message

Sujets en rapport avec ce message

"cout" n'affiche rien !!! [ par melkiorlenecrarque ] Salut à tous!voila: les coutVoila un exemple de code ultra simple qui bug chez moi:#include #include int main(){cout<<"je suis ouve switch???? [ par kalf2000 ] salut, je voudrais savoir si l'on peut utiliser le switch de facon à si la variable que l'on compare prend 2 valeur différentes mais que l'on face la c++ -> surcharge d'ope et heritage ... [ par Alligokouax ] je suis vraiment au bord du suicide, j'ai exam dans trois jours ... et c la merdecomment peux on faire et est ce que cela existe :utiliser la surcharg Déconcertant ! :( [ par Zeroc00l ] -={[ Zeroc00l ]}=-Bon j'ai apris recement a faire du C++cout affiche du texte une fois inclus iostream.h scanf recupere des valeur saisie a l'ecran .. surcharge operateur de flux >> en c++ [ par kawito ] bonjour,je realise une classe Chaine en c++, et j'aimerais savoir comment surcharger l'operateur >> friend istream& operator>>(istream& i, Chaine& s){ Surcharge d'operateur [ par jfk20004 ] Est il possible de m'expliquer clairement la surcharge d'operateurs:Ce que je sais :souvent utilisé dans les redefinition de classes mathematiques.PRO surcharge d'operateur dans une classe [ par jfk20004 ] Est ce que la surcharge d'operateur intervient chaque fois que l 'on definit une classe.Franchement je n'ai pas encore capté le pourquoi de la surchar question sur les surcharges et les fonctions amies en c++ [ par maymouna2008 ] salut tt le monde je veux que vous m expliquer et me donne des reponse ,svp c est urgent,  sur un programme en c++:c est un probleme d une fonction ma Conservation des données créees dans une classe [ par leyeye21 ] Bonjour,J'ai un soucis dans mon programme,Lorsque je vais dans la fonction "creation_contrat()" j'arrive à créer un nouveau contrat et le lire mais lo Squelette erroné ?! [ par Spolixjo ] Bonjour, J'ai reçu un exercice niveau 1ère année BTS IRIS qui consiste à compléter ce squelette ci-dessous. Je souhaiterai avoir l'avis d'une person


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,513 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales