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 :

Classe héritée présente dans la classe mère


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut Classe héritée présente dans la classe mère
    Bonjour,
    J'ai un petit problème d'implémentation. J'ai besoin faire une classe comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class mere{
      protected:
        vector <fils *> list_fils;
    ...
    };
     
    class fils : public mere{
     ...
    };
    J'ai une erreur au niveau du fichier.h de la classe fils : expected class name before { token
    Effectivement, l'une a besoin de l'autre pour pouvoir générer le .o. Comment faire ?
    Merci d'avance.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Citation Envoyé par Anium Voir le message
    J'ai besoin de faire une classe comme cela
    D'expérience non seulement on a rarement besoin de faire ça, mais en plus c'est sans doute un signe que le design n'est pas génial...
    Cela étant dit pour résoudre techniquement ton problème tu peux jeter un oeil à cette entrée de la FAQ.

    MAT.

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Peut être effectivement que le design est à revoir quelque part. Pourrais-tu préciser ton problème ? (but des classes mises en jeu)

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Bonjour,
    tu peut faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class fils;
     
    class mere{
      protected:
        vector <fils *> list_fils;
    ...
    };
     
    class fils : public mere{
     ...
    };

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    Merci pour vos réponses.

    Le but est de faire du reverse engineering sur un fichier exécutable.
    Il me faut créer un arbre d'appel des fonctions. Il me faut donc utiliser une structure adéquate pour stocker un sous programme (fonction).
    Comme un sous programme peut en appeler d'autre ou bien s'appeler lui même (fonction récursive), il me faut donc un vecteur stockant des sous programmes au sein de la classe sous programme.
    En espérant avoir été clair.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par Anium Voir le message
    il me faut donc un vecteur stockant des sous programmes au sein de la classe sous programme.
    Donc du coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class mere
    {
    private:
      std::vector< mere* > list_fils;
    };
    Ou bien ?

    MAT.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    Il m'est nécessaire d'avoir un conteneur stockant l'ensemble des sous programmes (qui eux même peuvent contenir des sous programmes). Ce conteneur n'étant pas un sous programme réel, il n'a pas besoin des attributs ou bien de méthodes spécifiques aux sous programmes. Par contre, un sous programme a le même schéma que ce conteneur mais en plus spécialisé.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Citation Envoyé par Anium Voir le message
    Ce conteneur n'étant pas un sous programme réel
    A ce moment-là un sous-programme ne devrait pas dériver de ce conteneur, si ?

    MAT.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    Et bien si, parce qu'il y a beaucoup d'attributs communs entre le conteneur et la classe sous programme et qu'il serait dommage de recopier l'ensemble des attributs et méthodes du conteneur dans la classe sous programme.

  10. #10
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Dans ce cas tu peux faire comme te dit Mongaulois non ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 151
    Par défaut
    Oui, c'est ce que j'ai fait.
    Ça marche nickel
    Merci pour vos réponses.

  12. #12
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Une autre façon sans passer par la déclaration anticipé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    template <class T> class mere
    {
      protected:
        vector <T*> list_fils;
    };
     
    class fils : public mere<fils>
    {
     
    };
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/10/2009, 16h38
  2. WaitForSingleObject dans des classes héritées
    Par Definol dans le forum Windows
    Réponses: 6
    Dernier message: 06/11/2007, 10h23
  3. Réponses: 1
    Dernier message: 05/01/2007, 14h00
  4. Réponses: 2
    Dernier message: 04/12/2005, 21h10

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