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 :

Communication entre objet

Vue hybride

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut Communication entre objet
    Bonjour à tous!

    dans mon projet, je dois faire communiquer deux classes cameraSettings et camera qui sont créées en même temps.
    camera dialogue avec une camera qui lui est associé, et cameraSettings est une interface graphique pour régler les paramètres d'utilisation de la caméra. Il est donc impératif que ces deux classes puissent s'échanger des informations.
    Pour ce faire j'ai déclaré dans chaque classes une variable du type de l'autre classes :
    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
    //cameraSettings.h
    #include "camera.h"
    class cameraSettings :public QWidget
    {
    Q_OBJECT
    public :
    cameraSettings ();
    camera *cam;
    };
     
    //camera.h
    #include "cameraSettings.h"
    class camera 
    {
    public :
    camera();
    cameraSettings *gui;
    };
    de cette façon, une fois les classes créées, je fais le lien les objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    camera *cameraS = new camera();
    cameraSettings *displayS = new cameraSettings();
     
    cameraS->gui = &displayS;
    displayS->cam = &cam;
    et ...... ca marche!

    par contre là où ça ne marche plus c'est quand il y a plusieurs cameras : chaque camera étant controlées par un couple camera/cameraSettings, je dois donc créer autant de couple qu'il y a de caméras. J'utilise donc des tableaux d'objets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //les headers des deux classes ne changent pas.
    camera *cameraS[nbCamera];
    cameraSettings *displayS[nbCamera];
    for (int i = 0; i < nbCamera ; ++i)
    {
    	cameraS[i]->gui = displayS[i];
    	displayS[i]->cam = cameraS[i];
    }
    tout compile correctement, mais le programme plante dès que l'une des classes utilise l'autre.... et évidement je ne sais pas comment faire... donc help si je puis me permettre.

    Merci d'avance!

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 497
    Par défaut
    C'est pas beau comme code mais bon, on n'est pas là pour ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    camera *cameraS[nbCamera];
    cameraSettings *displayS[nbCamera];
    for (int i = 0; i < nbCamera ; ++i)
    {
    	cameraS[i] = new camera();
    	displayS[i] = new cameraSettings();
    	cameraS[i]->gui = displayS[i];
    	displayS[i]->cam = cameraS[i];
    }
    C'est juste pour la forme car, entre autre, la gestion mémoire est pourrie.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    merci pour ta réponse.
    j'ai rajouté les lignes mais le programme plante toujours.
    sinon je me doute que cette méthode est bancale mais je n'en vois pas d'autre, pour éviter de mélanger mes caméras et mes boutons...
    est-ce que tu pourrais m'indiquer une autre manière de faire??

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    A mon avis, il pensait entre autres aux pointeurs nus : Présentation des pointeurs intelligents en C++ (de Loïc Joly) et Les pointeurs intelligents de Qt de Thiago Macieira et Harald Fernengel, traduction Thibaut Cuvelier).
    Au passage tu devrais regarder les conteneurs STL.

    Ensuite, juste avec le nom de tes classes, je comprend que cameraSettings appartiennent à camera, mais je ne comprend pas trop pourquoi camera appartient à cameraSettings ?

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 171
    Par défaut
    merci je me documente de ce pas.

    sinon par rapport au nom, ils ne suivent aucun protocole, ils reflètent juste la fonction de la classe.
    d'autre part camera doit connaitre cameraSettings car les caméras revoient parfois des informations utile pour l'utilisateur que j'aimerai pouvoirafficher dans cameraSettings.
    J'espère avoir répondu correctement à ta question

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 497
    Par défaut
    j'ai rajouté les lignes mais le programme plante toujours.
    Quelle ligne ?
    Quel type d'erreur ?

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

Discussions similaires

  1. Recherche de points communs entre objets
    Par pysnoo dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 24/04/2009, 14h39
  2. Communication entre objets via .NET Remoting
    Par JBidouille dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/05/2007, 22h52
  3. Communication entre objet via "Parent" ?
    Par starkson dans le forum Windows Forms
    Réponses: 11
    Dernier message: 17/02/2007, 18h22
  4. [Observateur] pattern publish/subscribe : communication entre objets
    Par mik-at dans le forum Design Patterns
    Réponses: 6
    Dernier message: 04/09/2006, 13h07
  5. Communication entre objet
    Par Nasky dans le forum Langage
    Réponses: 1
    Dernier message: 27/05/2006, 21h13

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