GNT sans publicité, site mobile, fonctionnalitées exclusives...

Relation classe Parent/Enfant et fonctions membres

Le
PurL
Bonjour,

Soit une classe Parent qui possede une variable membre nommée var1 et une
fonction membre nommée ma_fonction qui travaille sur var1.
Soit une classe Enfant dérivée de Parent qui possede une variable membre
nommée var2 et la variable héritée de Parent var1.
Enfant possède aussi ma_fonction par héritage.

Je voudrais réécrire ma_fonction au sein de Enfant car il faut travailler
sur var2, mais je voudrais aussi qu'en appelant Enfant::ma_fonction() cela
déclenche l'appel de la fonction Parent::ma_fonction() pour effectuer le
travail sur var1.

Je créé Enfant car je veux spécialiser/préciser la classe Parent mais tout
le travail qu'effectue Parent doit etre repporté dans Enfant (ca me parait
normal comme souhait)

ex:

class Parent
{
protected:
monobjet *var1;
public:
void ma_fonction()
{
var1->AutreFonction();
}
};

class Enfant : public Parent
{
protected:
monobjet *var2;
public:
void ma_fonction()
{
var2->AutreFonction();
}
};

//application
void Fonction()
{
Enfant enfant;
enfant.ma_fonction();
//je voudrais que var1->AutreFonction() et var2->AutreFonction() soit
appellée
//car apres tout var1 appartient à enfant
}


Merci de m'expliquer comment établir ce mécanisme,

PurL
Lire les 8 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Marc Bourguet
Le #825791
"PurL"
class Parent
{
protected:
monobjet *var1;
public:
void ma_fonction()
{
var1->AutreFonction();
}
};

class Enfant : public Parent
{
protected:
monobjet *var2;
public:
void ma_fonction()
{
var2->AutreFonction();
Parent::AutreFonction();

}
};


Envisager peut-etre en plus de mettre ma_fonction en virtuel.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++...index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

PurL
Le #825789
Envisager peut-etre en plus de mettre ma_fonction en virtuel.


Ca change rien :(
apparement, quand, dans la classe Enfant, on redéfini ma_fonction, celle ci
remplace/masque celle de Parent. Le plus surprenant c'est que si on définit
dans Enfant une autre fonction de meme nom avec des paramètres différents
(une surcharge), cette nouvelle fonction masquera aussi celle de Parent !!
(la je vois pas pourquoi)

PurL

Jean-Marc Bourguet
Le #825788
"PurL"
Envisager peut-etre en plus de mettre ma_fonction en virtuel.


Ca change rien :(


Ce n'etait qu'une suggestion sur la conception parce que si j'en crois
mon experience la plupart des membres qu'on veut modifier dans une
classe descendante sont generallement virtuels.

La solution etait au-dessus: ajouter
Parent::AutreFonction();
dans Enfant::ma_fonction().

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++...index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Falk Tannhäuser
Le #825786
Jean-Marc Bourguet wrote:
class Parent
{
protected:
monobjet *var1;
public:
void ma_fonction()
{
var1->AutreFonction();
}
};

class Enfant : public Parent
{
protected:
monobjet *var2;
public:
void ma_fonction()
{
var2->AutreFonction();


Parent::AutreFonction();


Plutôt
Parent::ma_fonction();
(qui appellera 'var1->AutreFonction()' - du coup, 'var1'
pourrait même être 'private' au lieu d'être 'protected'.


}
};



Falk


Jean-Marc Bourguet
Le #825571
Falk Tannhäuser
Jean-Marc Bourguet wrote:
class Parent
{
protected:
monobjet *var1;
public:
void ma_fonction()
{
var1->AutreFonction();
}
};

class Enfant : public Parent
{
protected:
monobjet *var2;
public:
void ma_fonction()
{
var2->AutreFonction();
Parent::AutreFonction();



Plutôt
Parent::ma_fonction();
(qui appellera 'var1->AutreFonction()' - du coup, 'var1'
pourrait même être 'private' au lieu d'être 'protected'.


Exact; et je crains avoir recommis la meme erreur dans un autre
message.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++...index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Publicité
Suivre les réponses
Poster une réponse
Anonyme