Probleme avec c++
Résolu
chabacha109
Messages postés
268
Date d'inscription
Statut
Membre
Dernière intervention
-
chabacha109 Messages postés 268 Date d'inscription Statut Membre Dernière intervention -
chabacha109 Messages postés 268 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
mes questions seront plus précise aujourd'hui:
class A
{
public:
void afficher();
};
void A::afficher()
{
cout<<"je suis le A";
}
class B:public A
{
public:
void afficher();
};
void B::afficher()
{
cout<<"je suis le B";
}
void main()
{
A a;
a.afficher();//il va afficher je suis a
B b;
b.afficher();//il va afficher je suis le b
}
//jusqu'à maintenant je suis d'accord avec le résultat,
le a est une instance de A , le b est une instance de B donc le résultat est évident :)
mais mon problème est la:
class A
{
public:
void xxx();
void afficher();
};
void A::xxx()
{
afficher();
}
void A::afficher()
{
cout<<"je suis le A"<<endl;
}
class B :public A
{
public:
void afficher();
};
void B::afficher()
{
cout<<"je suis le B"<<endl;
}
void main()
{
A a;
a.xxx();//ici il affiche je suis le A c'est normale il est une insance de A....
B b;
b.xxx();//ici mon probléme "je suis le A"
}
le b est déclaré comme une instance de la class B , et il déclanche la metode de A ????
je sait qu'il manque le mot clé virtual dans la classe de base virtual void afficher()
mais dans le premier version elle est sans "virtual" ,et marche bien :(
j'espère que mon question est claire
mes questions seront plus précise aujourd'hui:
class A
{
public:
void afficher();
};
void A::afficher()
{
cout<<"je suis le A";
}
class B:public A
{
public:
void afficher();
};
void B::afficher()
{
cout<<"je suis le B";
}
void main()
{
A a;
a.afficher();//il va afficher je suis a
B b;
b.afficher();//il va afficher je suis le b
}
//jusqu'à maintenant je suis d'accord avec le résultat,
le a est une instance de A , le b est une instance de B donc le résultat est évident :)
mais mon problème est la:
class A
{
public:
void xxx();
void afficher();
};
void A::xxx()
{
afficher();
}
void A::afficher()
{
cout<<"je suis le A"<<endl;
}
class B :public A
{
public:
void afficher();
};
void B::afficher()
{
cout<<"je suis le B"<<endl;
}
void main()
{
A a;
a.xxx();//ici il affiche je suis le A c'est normale il est une insance de A....
B b;
b.xxx();//ici mon probléme "je suis le A"
}
le b est déclaré comme une instance de la class B , et il déclanche la metode de A ????
je sait qu'il manque le mot clé virtual dans la classe de base virtual void afficher()
mais dans le premier version elle est sans "virtual" ,et marche bien :(
j'espère que mon question est claire
bon
si je fait ca;
class A
{
public:
void xxx();
virtual void afficher();
};
void A::xxx()
{
afficher();
}
void A::afficher()
{
cout<<"je suis le A"<<endl;
}
class B :public A
{
public:
void afficher();
};
void B::afficher()
{
cout<<"je suis le B"<<endl;
}
void main()
{
A a;
a.xxx();//ici je suis le A
B b;
b.xxx();//ici je suis le B
}
//ici il je suis le A
//ici "je suis le B
qu'est-qu'il passe exactement si j'ajoute ce "virtual", c'est mon probléme