Bonjour,
Voila je ne suis pas tout a fait débutant (enfin pas loin quand même) mais ça fait des années que je n'ai pas codé et je bute sur des notions de base de la poo.
Donc pour résumer mon problème, après mettre remis au C sur un petit projet de wake on lan je continue sur la lancée en faisant une interface graphique avec qt. Au niveau de la structure de mon code pour l'instant j'ai le main, une classe gui et une classe parc (qui gère une liste statique du par info). j'instancie tout dans le main et la classe gui a besoin de connaitre l'instance de parc et inversement. J'ai donc créé dans chaque classes une méthode publique qui récupère un pointeur de l'instance de l'autre classe (chacune appelée dans le main après la création des objets). et là le compilo commence a péter un plomb quand je déclare le pointeurs sur la gui.
Déjà je voudrais savoir si je m'y prend correctement dans la façon de faire.
Je suppose que le problème des classes qui doivent mutuellement connaitre les instances d'autres classes doit être courant et donc les solutions connues.
De plus quel est le problème avec la création d'un pointeur de type gui? (spécificité de Qt ?)
sinon je donne quand même un résumé du code en sachant qu'il y a sans doute d'autres erreurs de base dedans :
main
gui.h
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 #include <QApplication> #include "gui.h" #include "parc.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Gui interface; Parc mParc; interface.recupPtrParc(&mParc); mParc.recupPtrGui(&interface); interface.show(); return app.exec(); }
gui.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "parc.h" class Gui : public QWidget { Q_OBJECT public: Gui(); void recupPtrParc(Parc::Parc *monParc); private: Parc::Parc *PtrParc; };
parc.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "gui.h" Gui::Gui() : QWidget() { PtrParc = new Parc(); } void recupPtrParc(Parc *monParc) { *PtrParc = *monParc; }
parc.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "gui.h" class Parc { public : Parc(); void recupPtrGui(Gui::Gui *maGui); private : Gui::Gui *PtrGui; };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "parc.h" Parc::Parc() { PtrGui = new Gui(); } void recupPtrGui(Gui *maGui) { *PtrGui = *maGui; }
Partager