D'accord...:DCitation:
Envoyé par Miles
Donc, par déduction. Si je travaille depuis la classe Choc. Comme j'ai un CFP*, je ne peux pas faire de :
C'est bien ça?Code:cfp->getNomComposant();
Une méthode pour palier à ce problème?
Version imprimable
D'accord...:DCitation:
Envoyé par Miles
Donc, par déduction. Si je travaille depuis la classe Choc. Comme j'ai un CFP*, je ne peux pas faire de :
C'est bien ça?Code:cfp->getNomComposant();
Une méthode pour palier à ce problème?
Ben si, tu as un CFP*, donc tu y accèdes avec ->...
Dans ton exemple, tu avais une Camera, donc c'est directement '.', c'est du C++ classique...
Ok ok, c'est que la POO a tendance à embrouiller mes connaissances en C++!;)
Je vais essayer de pondre une version, et demain je montre mes soucis (j'espère ne pas en recontrer mais bon...)
Je devrais rapidement passer du côté forum C++ je pense...:D
Merci Miles
De rien ;)
Effectivement, maintenant, ça peut être plus du C++ que de la conception ;)
Le mieux est sans doute un nouveau sujet dans le forum C++, pour laisser une trace ici pour les autres :D
OK ! Juste une dernière question Miles:
Quand je crée un Choc (c'est inévitablement le point de départ!), j'utilise le constructeur qui prend entre autre comme paramètres le numero_choc... Cette donnée étant très importante pour les autres classes, j'ai deux solutions:
1) Soit j'écris tous les constructeurs des autres classes de façon à ce qu'ils prennent comme paramètre numero_choc, de même pour les méthodes en ayant besoin. Je me débrouille alors pour boucler tout ce qui a besoin de numero_choc d'un coup dans le constructeur.
Inconvénient : Une fois que la classe est instancié:impossible de retrouver le numero_choc (à moins que tu aies une méthode !!)
2) Chaque classe a un attribut privé numero_choc que je rempli lors de l'appel du constructeur.
Inconvénient : Ca fait le même attribut dans toute les classes, qui est identique partout... Je sais pas si c'est génial!!!
J'aimerai vraiment avoir ton retour là dessus ! :D
Si tu en as besoin partout, de ce numéro, autant le donner partout, c'est pas un problème.
Même si ça fait pas vraiment parti de la Classe (i.e : rien à voir avec l'objet )?
C'est clair, c'est limite, mais bon, ça serait se casser la tête pour pas grand chose, AMHA.
Oui, je pense aussi...
J'ai encore une p'tite interrogation: j'ai des fonctions (typiquement affichage par transparence de deux images) que je ne sais pas vraiment encore où ranger... Soit je crée une autre classe, soit je la laisse en fonction libre!
Je ne perçois pas bien les limites de la POO, j'ai l'impression que si je fais pas tout rentrer dans des classes, comme ils le font si bien à l'école, c'est pas de la POO propre ?:mrgreen:
classe ou libre ?:aie:
Une fonction libre peut appartenir à une classe, ça dépend si elle est fournie avec ou pas :)
L'avantage des fonctions libres, c'est que si elles sont bien faites, elles peuvent épargner la réécriture d'elles-mêmes : une classe polymorphique avec une fonction libre appelant des fonctions virtuelles.
Tout faire rentrer dans une classe, ça donne des trucs horribles comme la classe std::string qui est un grois bloc infâme.
Dans mon cas, je parle surtout de fonction de mon cru (donc pas très bien faite :mrgreen: )!Citation:
Envoyé par Miles
CE qui me chagrine, c'est qu'une fonction AffichageMix() a peu de point commun avec une classe CFP (un peu quand même, mais bon)!
Comme tu le dis, j'ai peur qu'à la fin, tout soit mis n'importe comment dans la classe, ça va devenir le b...
D'un autre côté, une fonction libre, pour moi, c'est une fonction mis dans un fichier outils.cpp à côté. Bof bof:roll:
J'ai choisi la solution de recopier le numero_choc là où j'en ai besoin. Ca me parait pas mal!;)
Une autre (dernière?) question:
Y a t-il un moyen pour que toutes les variables numero_choc soient identiques?
Ou bien faudra -til prévoir une mise à jour vers les autres classes lorsque je ferai:Le problème peut-être: si j'ai envie de rajouter d'autres classes!:mrgreen:Code:choc.setNumeroChoc(36547)
Merci!
A priori, la seule manière qu'elle soient identiques, c'est que ce soit la même variable, et donc que ce soir une référence dans les classes filles, mais bof.
Ok !
Je pense que le mieux est que dans la méthode qui modifie numero_choc, je fasse "descendre" l'info aux autres classes, qui elles n'auront pas le pouvoir de modifier directement cet attribut ?
Oui, sauf que tu ne pourras jamais leur interdire d'écrire dans cette variable :|
C'est juste...
Pb connu ou de conception ? ;)
Je pense pas que ce soit si grave... Au pire, je peux le déclarer const dans les autres classes que choc ?
C'est un problème qui est dû aux spécificités du langage : une variable d'une instance de classe peut être modifiée par cette instance, c'est normal.
Avec un const, tu ne pourras pas changer la valeur de la variable, depuis ton instance comme depuis l'extérieur.Je n'ai pas de solution simple à ce "problème".
OK c'est bien ce que je craignais. :mrgreen:
J'ai une idée:
Si CFP est une classe abstraite, et ne contient pas de méthode pouvant modifier numero_choc (private). Les deux classes filles (les seules pouvant être instanciées) n'auront donc pas accès à cet attribut, non?:mrgreen:
Ainsi, seul choc pourra modifier numero_choc (car possède un pointeur CFP *)?
Dis moi si je me plante lamentablement dans mon raisonnement!:aie:
Ca pourrait marcher, sauf que la variable dans CFP est private et donc non accessible de l'extérieur...
:aie:
+1
Donc il me faut une méthode pour la modifier.
Donc mon raisonnement est à l'eau complet:haha:
Disons, c'est bien essayé!