Bonjour,
je débute en C++, et en MVC aussi tant qu'à faire :-)
je cherche à lier mes trois objets et déjà je n'ai pas trouvé sur internet une seule et bonne méthode (quelques soient les langages). Je suis donc partie de l'idée qu'on appelait le contrôleur, et qu'à l'intérieur de celui-ci on instanciait le modèle et la vue, en passant this en argument.
Est-ce que déjà dans l'idée ça vous semble correcte ? (la meilleure solution, s'il y en a une)
J'ai donc essayé cela, et ça marchait plutôt pas mal :
Sauf que j'aimerai maintenant que ma variable view devienne un attribut de ma classe, du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include "Media_model.h" #include "Media_view.h" Media_controller::Media_controller(void){ Media_model *model = new Media_model; Media_view *view = new Media_view(this); }
et dans le .h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Media_controller::Media_controller(void){ model = new Media_model; view = new Media_view(this); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "Media_model.h" #include "Media_view.h" class Media_controller{ public : Media_controller(void); private : Media_model *model; Media_view *view; };
et là ça ne marche plus du tout... Pour le modèle il n'y a aucun problème, ça fonctionne très bien. J'ai donc fais des tas de tests différents sur la vue, j'ai remarqué que si je passais un Int à la place de this, ça fonctionne sans problème.
Voici le code de ma vue :
et le .cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include <iostream> #include "Media_controller.h" class Media_view{ public : Media_view(Media_controller *controller_); };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include "Media_view.h" using namespace std; Media_view::Media_view(Media_controller *controller_){ cout << "Media_view" << endl; }
Autre question aussi, j'ai lu que pour passer un objet, il fallait écrire *this, mais dans ce cas, ma vue n'accepte plus
mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part Media_controller *controller_
en argument. Ce qui fait que pour accéder à une méthode du contrôleur, je devrais utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part Media_controller controller_
au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part controller_.maMethode()
Du coup je suis perdue... je pensais que l'étoile et la flèche allaient de paire, que cela signifiait qu'on utilisait une méthode dynamique. Et à l'inverse, sans l'étoile et le point, une méthode statique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part controler_->maMethode()
Merci d'avance pour vos lumière, je me perds un peu :-s
Partager