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 :

Faire remonter un nombre inconnu de données


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut Faire remonter un nombre inconnu de données
    Bonjour,

    Je suis en train de faire une petite librairie, dont la structure est assez simple :

    1 classe de base avec pas mal de classes dérivées.

    Typiquement chacune de ces classe est un noeud d'un arbre binaire.

    J'ai une méthode définie sur ces classes qui me retourne un noeud, qui est fonction de cette méthode les deux noeuds "fils".

    le problème est qu'il me semble perdre de l'information en cours de route (en gros j'ai bien un noeud au final, mais qui ne contient pas du tout les bonnes informations, mais la méthode marche sur les noeuds terminaux.

    Voici ce à quoi ressemble mon code :
    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
     
    class noeud{
    protected:
    noeud *s1;
    noeud *s2;
    public:
    virtual noeud MaMéthode(){
    return F(s1->MaMéthode(),s2->MaMéthode();
    }
    };
     
    class noeud_dérivé{
    protected:
    ....
    public
    noeud MaMéthode(){
    return G(s1->MaMéthode(),s2->MaMéthode();
    };
    Et donc en gros sur des noeuds pour lesquels s1 et s2 sont NULL ça marche, mais si le noeud n'est pas terminal j'obtiens un noeud qui donne n'importe quoi.

    A priori le problème vient du fait que les noeuds créés par si->MaMéthode() sont des variables locales dans this->MaMéthode, j'ai essayé de faire en sorte qu'elle ne soient pas effacées en déclarant chaque noeud intermédiaire avec un mais rien n'y fait.

    Quelqu'un aurait-il une manière de faire pour préserver l'existence des noeuds intermédiaires ?

    Merci

    --
    Z.

  2. #2
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    Je ne suis pas bien sur de ce que tu veux faire avec MaMethode, F et G, mais puisque tu crées ton objet avec new dans F et G, elles devraient renvoyer un pointeur ou une référence (noeud * f() ou noeud & f() et pas noeud f() )vers un noeud, c'est à dire celui que tu as crées avec new.

    Sinon dans ton cas tu fais une *copie* de ton noeud, ce qui appelle donc le constructeur de copie. Ce qui peut etre dangereux avec les pointeurs si tu n'as pas défini un constructeur de copie explicitement. (en as tu fait un?). Mais bien sur ça dépend de ce que tu fais avec ton arbre, et comment tu le manipules dans ton programme.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Par défaut
    Ok merci, en effet en retournant un pointeur ça marche, en plus c'est plus propre car ça me permet de virtualiser la classe de base alors que sinon je devais lui donner une version pipo de la méthode.

    Et en ce qui concerne les constructeurs, je n'ai pas défini de constructeur de copie en effet.

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

Discussions similaires

  1. Faire "remonter" les données dans des requetes imbriquées
    Par Earthwormjim dans le forum Requêtes
    Réponses: 5
    Dernier message: 30/08/2006, 17h37
  2. Comment gérer un nombre inconnu d'objet ?
    Par Clad3 dans le forum C++
    Réponses: 28
    Dernier message: 12/03/2005, 11h55
  3. Réponses: 17
    Dernier message: 04/02/2005, 12h05
  4. Réponses: 3
    Dernier message: 18/04/2004, 08h26
  5. est il possible de faire un trie sur un paramètre donné
    Par chtiboss dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/03/2004, 11h51

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