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 :

operator<< : n'affiche que l'adresse de l'objet..


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Par défaut operator<< : n'affiche que l'adresse de l'objet..
    Bonjour,

    J'ai réalisé un Graphe générique, et celle ci comporte une fonction print(), déclarée comme ci-dessous :
    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
     
    template <class VertexKey, class VertexData, class EdgeKey, class EdgeData>
    class Graph
    {
         ...
        VertexData& atVertex(VertexKey key);
        EdgeData& atEdge(VertexKey vkey, EdgeKey ekey);
        ...
        void print();
    };
    ...
    template <class VertexKey, class VertexData, class EdgeKey, class EdgeData>
    void Graph<VertexKey, VertexData, EdgeKey, EdgeData>::print()
    {
        for (VertexKey i = firstVertex(); isVertexValid(); i = nextVertex())
        {
            std::cout << i << "(" << atVertex(i) << ") : ";
            for (EdgeKey j = firstEdge(); isEdgeValid(); j = nextEdge())
                std::cout << j << "(" << atEdge(i, j) << ") ";
            std::cout << std::endl;
        }
    }
    Jusque là, tout va bien (un peu comme l'histoire de l'homme qui saute du 20ème étage..). Seulement, si la donnée contenue dans le Vertex est une autre classe comme par exemple Lieu :
    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
     
    class Lieu
    {
        int ordre;
        std::string action;
     
    public:
     
        Lieu(int ordre) : ordre(ordre) { };
     
        int getOrdre() const { return ordre; };
        void setOrdre(int _ordre) { ordre = _ordre; };
     
        std::string getAction() const { return action; };
        void setAction(std::string _action) { action = _action; };
     
        friend std::ostream& operator<<(std::ostream& o, const Lieu& lieu)
        {
            return o << lieu.getOrdre() << ", " << lieu.getAction();
        };
    };
     
    -----------------
     
    Graph<int, Lieu *, int, int> activites;
    Bien que je redéfinisse l'opérateur <<, la fonction print() m'affiche toujours l'adresse de l'objet Lieu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1(0x805c6b0) : 2(2) 11(11)
    2(0x805c6e8) : 3(3)
    3(0x805c778) : 4(4)
    ...
    Or, je voudrais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    1(1, M) : 2(2) 11(11)
    2(2, D) : 3(3)
    3(3, O) : 4(4)
    ...
    Ca devrait être réalisable ? Est-ce la redéfinition de l'opérateur << qui n'est pas correct ?
    Merci d'avance !

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Ca doit venir de la nature de la classe ostream car le code a l'air correct.

  3. #3
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Par défaut
    Dans ce cas préci, atVertex(i) me renvoi une référence sur Lieu *.
    Je me demandais si Lieu * était bien "concerné" par la redéfinition de l'opérateur <<.

  4. #4
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Et comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     o << lieu.getOrdre() << ", " << lieu.getAction();
    return o;
    ?

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 19
    Par défaut
    C'est équivalent. J'ai tout de même testé, mais ça ne résout pas le problème. J'ai l'impression qu'il manque juste un petit quelque chose..

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Tu appelles comment ton operateur << ? C'est cette ligne là qui est peut-être à revérifier...

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

Discussions similaires

  1. Image s'affiche que lors du redimensionnement
    Par gmonta dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 17/05/2005, 13h28
  2. algorithme de tri tableau :afficher que les éléments unique
    Par sofiane61 dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 31/03/2005, 19h50
  3. [Eclipse 3.0.1] Image qui n'affiche que son path
    Par thehpman dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 16/03/2005, 11h28
  4. n'afficher que les "print" dans query annalyser
    Par sky_perrinos dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/12/2004, 10h58
  5. [XML] n'afficher que les 3 premiers!
    Par Little Sloth dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/06/2004, 10h59

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