Classe C++

Fermé
Vivi - 15 juil. 2005 à 15:05
 zmatz - 9 janv. 2009 à 15:28
Bonjour,

J'ai besoin de quelques conseils en programmation C++ orienté objet.

J'ai une classe Param, qui contient des données que je souhaite initialiser une fois avec certaine valeur. bon la, il n'y a pas de problème.

Ensuite, J'ai d'autres classes qui utilisent les données de la classe Param, juste ne lecture.

Et je souhaiterai, que toutes ces classes utilisent les données de Param, mais que si je modifie les données de Param, cela soit pris en compte dans toutes les autres classes.
En fait, il ne faudrait qu'une instance de Param que toutes les classes utiliserait, mais je ne sais pas comment faire ceci, si c'est possible.


Je vous remercie de votre aide.

4 réponses

Luffy =) Messages postés 365 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 19 mai 2006 110
15 juil. 2005 à 15:19
Salut vivi !

Alors, pour que plusieurs classes utilisent une même instance d'une autre classe, il suffit de leur passer le pointeur de l'instance aux autres classes. Explication :

tu instancies d'abord la classe Param.
Ensuite, en instanciant les autres, tu leur passe le pointeur de Param.

Exemple par le code :
Param *param = new Param();
ClasseA *a=new ClasseA(param);
ClasseB *b=new ClasseB(param);

dans les classes ClasseA et ClasseB tu auras un pointeur vers Param* que tu initialiseras avec le pointeur param passé au constructeur.

Pour les accès en lecture des variables, il faut bien utiliser des accesseurs et déclarer tes variables privées.

Voilà, j'espère avoir été clair.

++ bon courage =)
0
Bonjour,

merci pour la réponse.

Cela marche aussi si dans la ClasseA, je declare une ClasseC qui utilise aussi Param ???

et si je ne declare pas ClasseA et ClasseB comme pointeurs, c'est toujours valable ?

Merci,
0
Luffy =) Messages postés 365 Date d'inscription mercredi 20 avril 2005 Statut Membre Dernière intervention 19 mai 2006 110
15 juil. 2005 à 16:51
Cela marche aussi si dans la ClasseA, je declare une ClasseC qui utilise aussi Param
Bien sûr ! en fait, tu auras dans ta mémoire un espace alloué pour l'objet param, et tu ne fais que passer cette adresse à toute tes classes.

Elles utiliseront donc la même instance. Mais attention à ne pas l'utiliser partout en le passant à tout va. Il y a peut-être un problème d'analyse là. Mais je ne connais pas ton projet, donc tu n'as peut-être pas le choix.

et si je ne declare pas ClasseA et ClasseB comme pointeurs, c'est toujours valable ?

je pense que oui. je ne m'étais jamais posé la question mais je ne vois pas pourquoi ça ne marcherait pas. le compilo va allouer l'espace nécessaire pour une instance de Param dans l'objet, donc oui, ça devrait marcher.

++ Bon week-end =)
0
Salut, a propos des classes, j'ai visual c++ 2005 et je n'arrive pas a integrer de classes a mon prg:
#include <class> ne marche pas
et #include <class.h> ne marche pas non plus,
j'aimerais savoir comment faire.
Merci d'avance
0
Salut
Essaye ça:
#include "class.h"

;)
0