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 :

à l'aide : deux soucis en c++


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut à l'aide : deux soucis en c++
    Bonjour,

    je développe une application en MFC (VC6), je suis bloqué, j'ai a créer deux classes : Classe A et classe B où:

    - A a un tableau d'objets de type B
    - B a un pointeur de type A qui point sur un objet A

    Soit quelque chose comme ça :

    Class A{
    B[50] lesB;
    };
    Class B{
    A* monA;
    };


    ça c'est le premier problème, le deuxième problème est le suivant :

    j'ai plusieurs classes dans mon projet et je désire créer une classe qui hérite de "vector<type>" (STL) cette liste devrait être accessible partout dans mon projet d'une façon unique (je ne veux pas créer plusieurs instances). j'ai pensé au singleton.. le problème qui se pose c'est comment accéder a ma liste depuis une classe X et Classe Y et... sachant que je l'ai déclaré dans une classe Z ?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Je suppose que pour le 1er problème, il faut deviner que tu as un problème de références croisées

    Essaye comme cela alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class A;
     
    Class B
    {
       A* monA;
    };
     
    Class A
    {
       B[50] lesB;
    };
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Oui exact, j'avais oublié de préciser le problème.. l'important maintenant c'est que la ligne que vous avez ajouté au code a "magiquement" résolu le problème! ça marche comme prévu maintenant! merci beaucoup.

    reste a voir le deuxième problème.

  4. #4
    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
    Citation Envoyé par lampexp Voir le message
    j'ai plusieurs classes dans mon projet et je désire créer une classe qui hérite de "vector<type>" (STL) cette liste devrait être accessible partout dans mon projet d'une façon unique (je ne veux pas créer plusieurs instances). j'ai pensé au singleton.. le problème qui se pose c'est comment accéder a ma liste depuis une classe X et Classe Y et... sachant que je l'ai déclaré dans une classe Z ?
    Revois ton design pour avoir une solution simple.

    Le premier problème avait sa solution dans la FAQ.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 32
    Par défaut
    Concernant le deuxième problème, ne serait-il pas possible de faire en sorte que les classes X et Y aient comme membre un pointeur sur un objet de type Z ?
    Une autre solution pourrait être de faire en sorte que X et Y dérivent de Z. Ainsi, elles peuvent accéder aux membres de Z, si ceux ci sont déclarés protected ou public.

  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
    Hériter pour hériter, ce n'est pas du tout une bonne idée. L'héritage public, c'est IS-A, pas "j'ai envie de récupérer ce que tu as et je n'ai pas envie de me fouler".

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Bonsoir,

    Citation Envoyé par lampexp Voir le message

    j'ai plusieurs classes dans mon projet et je désire créer une classe qui hérite de "vector<type>" (STL) cette liste devrait être accessible partout dans mon projet d'une façon unique (je ne veux pas créer plusieurs instances). j'ai pensé au singleton.. le problème qui se pose c'est comment accéder a ma liste depuis une classe X et Classe Y et... sachant que je l'ai déclaré dans une classe Z ?
    Je ne vois pas comment Z pourrait être autre chose qu'un singleton.
    Pour accéder à Z depuis un object X, il devrait suffire de faire getInstance pour récupérer l'adresse du singleton.

    Enfin, je n'ai peut être pas tout compris.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Invité
    Invité(e)
    Par défaut
    lampexp,

    Evite de dériver de std::vector<>, ou de n'importe quel autre conteneur de la bibliothèque standard. Ces classes ne sont pas prévues pour être des classes dérivées. En fait, dans ma distribution MingW, le destructeur de std::vector n'est même pas virtuel, ce qui est un signe clair qu'il ne faut pas en dériver.

    Si tu veux créer une classe qui se comporte comme un vecteur mais avec des services en plus, crée une classe avec un membre de type std::vector<Type> et implémente les mêmes méthodes, en passant le relais à celles de vector:

    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 MonVector
    {
    private:
      std::vector<Type> m_vecteur;
     
    public:
      typedef std::vector<Type> value_type;
      typedef std::vector<Type>::const_iterator const_iterator;
      typedef std::vector<Type>::iterator iterator;
     
      void push_back(const value_type& valeur)
      {
        m_vecteur.push_back(valeur);
      }
     
      // etc.
    };

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    j'ai trouvé une solution pour le deuxième probleme, j'ai créer une classe "Z" avec des données membres statiques privés et j'ai déclaré les classes X et Y comme friend dans Z.
    j'accède aux données de Z comme suit Z::vecteur.push_back...
    5hdumatin, j'ai éviter d'hériter de vector, c'était pas une bonne idée, merci pour la remarque.

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

Discussions similaires

  1. [AIDE]Fusion de deux RichEdit
    Par echap2000 dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/08/2007, 18h36
  2. Aide pour une requete, deux table, un champ commun.
    Par Space Cowboy dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/03/2007, 10h59
  3. [AIDE]configurer mes deux disque dur?ecran bleu?
    Par masta64 dans le forum Composants
    Réponses: 4
    Dernier message: 30/12/2006, 20h43
  4. Besoin d'aide pour joindre deux requetes
    Par ganga dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/06/2006, 15h35
  5. Réponses: 2
    Dernier message: 03/10/2002, 17h24

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