OVH Cloud OVH Cloud

acces aux donnees

1 réponse
Avatar
mohamed92000
Bonjour à tous, voilà j'ai deux classe :
Class Base{
//son constructeur;
virtual fct();
};
Class Derive: public Base{
//son constructeur;
virtual fct();
type* m_pDonne;
};
main()
{
Derive* pDerive = new Derive(donne);

Base* pBase(pDerive);
ou
Base* pBase = pDerive;
pBase->fct();//appel la fct de derive typage dynamique;

pBase->m_pDonne;//je pense que ça ne marche pas
pour tricher :
((Derive*)Base)->m_pDonne;
}
ma question est :
est ce que le cast (Derive*)Base fait appel a l'opetrateur = ou autre
chose?.
est ce que la valeur de ((Derive*)Base)->m_pDonne est forcement egale
a celle de pDerive->m_pDonne;
en gros l'acces aux données de la classe fille à partir d'une classe
mère.
merci d'avance.

1 réponse

Avatar
Fabien LE LEZ
On 12 Sep 2003 09:02:05 -0700, (mourad)
wrote:

main()


int main()

{
Derive* pDerive = new Derive(donne);

Base* pBase(pDerive);
ou
Base* pBase = pDerive;
pBase->fct();//appel la fct de derive typage dynamique;


OK

pBase->m_pDonne;//je pense que ça ne marche pas


OK

((Derive*)Base)->m_pDonne;


J'imagine que tu voulais écrire
((Derive*)pBase)->m_pDonne;

est ce que le cast (Derive*)Base fait appel a l'opetrateur = ou autre
chose?


Certainement pas à Base::operator= ou Derive::operator= de toutes
façons, puisqu'il n'y a pas copie d'objet (même s'il y a peut-être
copie de pointeur)

est ce que la valeur de ((Derive*)Base)->m_pDonne est forcement egale
a celle de pDerive->m_pDonne;


Oui. Ce qui ne veut pas dire que ce soit une bonne méthode pour
accéder à m_pDonne.