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

Discussion :

Pointeurs contenus dans deux classes

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut Pointeurs contenus dans deux classes
    Bonjour,

    Je suis actuellement confronté à un petit problème : J'ai deux classes, donc 2x2 fichiers .h et .cpp
    Le problème vient du fait que dans mes attributs de ces deux classes, je retrouve une instance de chacune, si vous préférez:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Classe 1:
     
    Classe2 * obj2;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Classe 2:
     
    Classe1 * obj1;
    Mais pour que chaque classe 'se connaissent' comment dois-je m'y prendre? Deux includes dans les classes et Qt me sort l'erreur ISO C++ forbids...

    Précisions : Classe 1 hérite de QGraphicsView et Classe 2 de QGraphicsScene

    Comment feriez-vous? Merci.

  2. #2
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    C'est une question de C++ plutôt que de Qt, et c'est un problème très classique, la solution est de "déclarer" ta classe utilisée en attribut au lieu de la "définir" (telle qu'elle est définie dans son fichier .h).

    Tu dois donc faire
    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
    // Classe1.h
    class Classe2;
     
    class Classe1
    {
        Classe2* ptrClasse2;
    };
     
    // Classe2.h
    class Classe1;
     
    class Classe2
    {
        Classe1* ptrClasse1;
    };
    Et tu fais les include dans tes fichiers cpp. En fait tu n'as besoin de la vraie définition d'une classe que lorsque tu crées un objet de cette classe, pour un pointeur ça n'est pas nécessaire.

  3. #3
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Effectivement, maintenant que tu me l'expliques c'est logique :o
    Merci en tout cas, et pour la rapidité de la réponse également.
    Bonne fin de journée.
    (resolved)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/09/2010, 16h52
  2. utilisation d'un NotifyIcon dans deux class
    Par Woodone dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/01/2010, 09h03
  3. Utilisation d'un tableau dans deux classes
    Par Yokooo dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 30/07/2009, 16h41
  4. pointeur contenus dans une structure avec jna
    Par tetinemandd dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 30/06/2009, 13h53
  5. Réponses: 10
    Dernier message: 17/04/2009, 17h19

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