Question sur l'heritage et classes

Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005 - 8 juin 2003 à 02:34
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005 - 9 juin 2003 à 14:38
Salut,

J'aimerai savoir si c'est possible qu'un changement de donnee dans une classe de base affecte les 2 classes heritees?

Par exemple :

#include 

class A
{
protected:
int num;
public:
void SetNum(int tNum)
{ num = tNum; }
};

class B : public A
{
public:
void PrintA()
{ cout << num; }
};

class C : public A
{
public:
void PrintA()
{ cout << num; }
};

void main()
{
B b;
C c

b.SetNum(34);
b.PrintA();
c.PrintA();
}



Le but est que lorsqu'on change "num" avec b que le "num" dans c ai la meme valeur.

Merci d'avance

P.S J'utilise Turboe C++ 3.0

3 réponses

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
8 juin 2003 à 10:29
Salut,

Non car la modification se fait sur l'instance d'un objet. Cette instance ne sait absolument pas combien d'instances du même objet existent en mémoire.

Kaid - kaid.fr.st
0
dordark Messages postés 3 Date d'inscription mardi 18 mars 2003 Statut Membre Dernière intervention 8 juin 2003
8 juin 2003 à 17:59
-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> Non car la modification se fait sur l'instance d'un objet. Cette instance ne sait absolument pas combien d'instances du même objet existent en mémoire.
>
> Kaid - kaid.fr.st
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Salut,
> >
> > J'aimerai savoir si c'est possible qu'un changement de donnee dans une classe de base affecte les 2 classes heritees?
> >
> > Par exemple :
> >
> >
> > #include 
> > 
> > class A
> > {
> > protected:
> > int num;
> > public:
> > void SetNum(int tNum)
> > { num = tNum; }
> > };
> > 
> > class B : public A
> > {
> > public:
> > void PrintA()
> > { cout << num; }
> > };
> > 
> > class C : public A
> > {
> > public:
> > void PrintA()
> > { cout << num; }
> > };
> > 
> > void main()
> > {
> > B b;
> > C c
> > 
> > b.SetNum(34);
> > b.PrintA();
> > c.PrintA();
> > }
> > 
> > 

> >
> > Le but est que lorsqu'on change "num" avec b que le "num" dans c ai la meme valeur.
> >
> > Merci d'avance
> >
> > P.S J'utilise Turboe C++ 3.0
>
0
Darkneon Messages postés 56 Date d'inscription vendredi 18 mai 2001 Statut Membre Dernière intervention 13 décembre 2005
9 juin 2003 à 14:38
Salut,

Ce ne pas grave, j'ai reussi a contourner le probleme. J'ai mis un pointeur (wow, pour la premiere fois je leurs aient trouver une utilisation, tout un exploit!) dans la class et je lui attribut une variable lors de ca creation. Ca marche, j'ai le resultat voulu.
0
Rejoignez-nous