-
schema de developpment
bonjour,
après plusieurs mois de formation (non terminer a ce jour), je me lance enfin dans une appli nettement plus conséquente.
La petite histoire, avant de me mettre au c++ je faisais du php (je pratique d'ailleurs toujours) bref, un, des modèles de conception actuel objet (mvc) et celui que je trouve le plus clair et robuste.
J'ai donc pris ce model de conception pour écrire mon application en c++, et je me pose une question concernant les vues.
Les vues sont actuellement de simple écran de console, et je me retrouve devant un petit problème lié au passage des valeurs dans ma vue.
Mon contrôleur charge le modèle et les fabriques dont j'ai besoin.
J'ai donc un objet du model membre du contrôleur qui contient les données a afficher avec la vue.
Je me pose la question de savoir si en passant par référence l'objet dans la vue, la modification remonte automatiquement a l'appel d'origine (objet du contrôleur) ou faut il que je passe par l'appel d'une propriété(fonction membre en lecture/écriture) de la vue, ce qui revient a déclaré un évènement dans le contrôleur.
j'espère ne pas être trop confus dans mon énoncé.
cordialement
-
Salut,
Lorsque tu transmets une variable par référence, tu as deux possibilités:
- Soit tu la passe par référence constante, et le compilateur veillera à ce que tu n'invoque, au départ de la référence (constante), que des fonctions membres constantes (qui se sont engagées à ne pas modifier l'objet courent), ce qui garantira que ton objet d'origine ne sera pas modifié.
- Soit tu la passe par référence non constante, et le compilateur te laissera invoquer, au départ de ta référence, n'importe quelle fonction membre, y compris les fonctions membres non constantes (qui ne se sont pas engagées à ne pas modifier l'objet, et qui le modifient donc peut être... ou non), et, si la fonction membre modifie la référence, la modification sera répercutée sur l'objet d'origine.
Tu devrais donc pouvoir tirer toi-même la conclusion qui s'impose:
La vue n'étant, a priori, pas susceptible de modifier l'objet qu'on lui transmet, il vaut mieux le passer par référence constante (en n'oubliant pas de déclarer constante toute fonction qui ne modifie pas l'objet en cours :D).
Si la vue nécessite de modifier l'objet courent (mais est-ce raisonnable :question:), tu peux passer l'objet sous la forme d'une référence non constante. Cependant, l'idéal serait sans doute que la vue passe par le controleur pour ce faire ;)