[C++] Comment feriez-vous dans cette situation?

Comment feriez-vous dans cette situation? [C++] - Programmation

Marsh Posté le 14-03-2002 à 18:54:07    

Voici la situation: je dispose d'une classe hébergeant plusieurs variables vitales au fonctionnement de mon programme, et j'aimerais lui lier le plus simplement possible des classes filles qui auront accès à ces variables (pas seulement un héritage de la classe principale, un vrai accès à ces données). La classe principale devra aussi avoir accès aux fonctions de ces classes filles.
 
Quelles sont les solutions à ce problème?

 

[jfdsdjhfuetppo]--Message édité par Alload--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 14-03-2002 à 18:54:07   

Reply

Marsh Posté le 14-03-2002 à 19:05:38    

:heink:  
la classe base devra appeler les fonctions des classes filles ?
donc cree des obj fille ? :heink:


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 14-03-2002 à 19:07:00    

Oui ça je sais, mais comment faire pour que les objets filles puissent utiliser les variables private ou protected de la classe où elles se trouvent?

Reply

Marsh Posté le 14-03-2002 à 19:08:07    

Tu peux déclarer les classes comme étant friend les unes des autres.
class B;
class A
{
    // ...
private:
    friend class B;
};
 
class B
{
    // ...
private:
    friend class A;
 
};
 
Dans cette situation, la classe A a un acces total à la classe B et inversement. C'est pas très beau, mais ca fait exactement ce que tu demandes...
 
a+

Reply

Marsh Posté le 14-03-2002 à 19:13:58    

t sur de ta conception la :heink:


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 14-03-2002 à 19:18:37    

Bon je comprends l'idée mais comment la mette en oeuvre, prenons un exemple:
 
class CPere
{
public:
void DireLaTailleDeSaFamille() {cout << nNombreDeGensDansLaFamille << endl;}
};
 
class CFamille
{
int nNombreDeGensDansLaFamille;
CPere pere;
};
 
 
Voilà, c'est théorique car ça marcherait pas, mais vous comprenez l'idée.

 

[jfdsdjhfuetppo]--Message édité par Alload--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 14-03-2002 à 19:20:04    

:heink:  
ca ressemble a po grand chose


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 14-03-2002 à 19:26:17    

:lol: C'est quand même pas sorcier ce que j'aimerais faire, initialiser un objet dans une classe, objet qui pourra utiliser les variables de ladite classe sans passer par un pointeur. Quand je dit utiliser c'est pas juste hériter des variables de la classe, c'est pouvoir accèder à celles-ci.

Reply

Marsh Posté le 14-03-2002 à 22:55:32    

Comment on déclarer une classe friend dans une autre classe?
 
De plus, que veut réellement dire friend? Qu'elles auront en commun les mêmes variables, ou juste les mêmes définitions de variables?

Reply

Marsh Posté le 14-03-2002 à 23:05:05    

Alload a écrit a écrit :

Comment on déclarer une classe friend dans une autre classe?
De plus, que veut réellement dire friend? Qu'elles auront en commun les mêmes variables, ou juste les mêmes définitions de variables?  




ni l'une ni l'autre.
 
Une fonction friend ou les methodes d'une classe
friend peut acceder
aux membres prives d'une classe qui l'a
declaree comme friend.
(l'inverse n'est pas vrai: tu n'as pas le droit
d'acceder aux membres prives d'une classe
en la declarant toi-meme amie.)
 
LEGREG

Reply

Marsh Posté le 14-03-2002 à 23:05:05   

Reply

Marsh Posté le 15-03-2002 à 07:05:11    

legreg a écrit a écrit :

 
Une fonction friend ou les methodes d'une classe
friend peut acceder
aux membres prives d'une classe qui l'a
declaree comme friend.


Si j'ai bien compris, la classe Y déclarée comme friend dans la classe X pourra utiliser les variables de X mais X ne pourra pas utiliser les variables de Y?
 
Si c'est ça, c'est ce qu'il me faut, donc comment déclarer une classe Y friend dans une classe X?

Reply

Marsh Posté le 15-03-2002 à 07:31:58    

dans ta declaration de classe X tu rajoute,
friend class Y;
 
sinon selectionne friend, et appuie sur f1 c expliqué en general!

 

[jfdsdjhfuetppo]--Message édité par Rob Roy--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 15-03-2002 à 08:53:04    

Ou alors, une classe interne. Tu défini ta classe fille dans la définition de ta classe mère, genre:
 
class CClassMere
{
 
public:
  ...
 
private:
  class CClassFille
  {
  public:
  ...
  private:
  ...
  }
}
 
Bien sur, tu pourrais aussi bien déclarer CClassFille comme membre public de CClassMere.
 
De cette façon, je crois que les 2 classes ont accès à ts les membres de chaque classe.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed