IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Opérateur d'affichage C++ <<


Sujet :

C++

  1. #1
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut Opérateur d'affichage C++ <<
    Bonjour,

    Voici une version minimale de mon code:
    Classe Neurone:
    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
     
    ostream& afficher(ostream& sortie) const
    {
    sortie << "Le neurone en position ("<<position_.x()<<", "<<position_.y()<<") avec une atténuation de "<<attenuation_;
    if (fils.empty()){
    sortie << " n'est connnecté à aucun neurone." << endl;}
    else
    {
    sortie << " est connecté au(x) neurone(s) suivant(s) :" << endl;
    for (auto const& n : fils)
    {
    sortie <<"   - neurone en position ("<<(n->position()).x()<<", "<<(n->position()).y()<<")" << endl;
    }
    }
    return sortie;
    }
    Classe Cerveau:
    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
     
    class Cerveau{
    	 public:vector<Neurone *> connectome_;
     
    ....
    ostream& afficher(ostream& sortie) const{
    	sortie << "Un cerveau à " << connectome_.size() << " neurone(s) :" << endl;
    	 for(size_t i=1;i<connectome_.size();i++)
        { sortie<<connectome_[i]->afficher(sortie);
    	}
    	return sortie;
    }
    friend std::ostream& operator <<(std::ostream&, const Cerveau&);
    };
     
    ostream& operator<<(ostream& sortie, Cerveau const& c)
    {
    	c.afficher(sortie);
    	return sortie;
    };
    J'ai un affichage du genre: ox64251.. le neurone en position
    Avez-vous une idée sur l'erreur ?

    Merci d'avance.
    Cordialement.
    La science ne connaît qu'une loi: la contribution scientifique.

  2. #2
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Pour ton erreur, ça me fait penser à "tu affiches une adresse". position_.x() ça renvoie quel type?

    Sinon, là je pense que tu tests le compilateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    class Cerveau{
    	 public:vector<Neurone *> connectome_;
    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class Cerveau{
    public:
        std::vector<Neurone *> connectome_;
    Et ici, on dirait que ça devrait être un 0 à la place du 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for(size_t i=1;i<connectome_.size();i++)

    PS : Évites using namespace std dans les headers

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    La ligne sortie << connectome_[ i ]->afficher( sortie ); me paraît incorrecte.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    @Bretus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class Neurone
    {
     Coordonnees position_;
    ........
    };
    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
     
    class Coordonnees
    {
    public:
      Coordonnees(int un_x, int un_y) : x_(un_x), y_(un_y) {}
      int x() const {
        return x_;
      }
      int y() const {
        return y_;
      }
    private:
      int x_;
      int y_;
    };
    L'affichage est le même! et le problème persiste ..
    Merci d'avance pour votre aide.
    La science ne connaît qu'une loi: la contribution scientifique.

  5. #5
    Membre habitué Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Points : 163
    Points
    163
    Par défaut
    J'ai fait ce changement:

    sortie<<connectome_[i]->afficher(sortie);

    -->

    connectome_[i]->afficher(sortie);

    Et ça marche..y a pas d'affichage d'adresses..

    Merci .
    La science ne connaît qu'une loi: la contribution scientifique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question Sur l'Opérateur d'affichage C++ <<
    Par chercheur111 dans le forum C++
    Réponses: 24
    Dernier message: 19/04/2014, 21h28
  2. Opérateur d'affichage C++
    Par chercheur111 dans le forum C++
    Réponses: 9
    Dernier message: 01/04/2014, 22h23
  3. Réponses: 3
    Dernier message: 11/08/2010, 09h02
  4. Réponses: 2
    Dernier message: 17/10/2009, 20h49
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo