classe d'accès de base fn avec la même signature de l'objet de classe dérivée
-
18-09-2019 - |
Question
Est-il possible d'accéder à une fonction de classe de base qui a la même signature que celle d'une fonction de classe dérivée en utilisant un objet de classe dérivée ?. voici un échantillon de ce que je suis en indiquant ci-dessous ..
class base1 {
public:
void test()
{cout<<"base1"<<endl;};
};
class der1 : public base1 {
public:
void test()
{cout<<"der1"<<endl;};
};
int main() {
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
La solution
Vous devez saisir le nom complet de la méthode qui est incompatible avec celle héritée.
Utilisez obj.base1 :: test ()
Autres conseils
Vous ne pouvez pas remplacer une méthode dans la classe dérivée si vous n'avez pas fourni un mot-clé virtuelle.
class base1
{
public:
void test()
{
cout << "base1" << endl;
};
};
class der1 : public base1
{
public:
void test()
{
cout << "der1" << endl;
};
};
int main()
{
der1 obj;
obj.test(); // How can I access the base class 'test()' here??
return 0;
}
Ainsi, le code ci-dessus est erroné. Vous devez donner:
virtual void test();
dans votre classe de base
Vous pouvez utiliser ceci:
((base)obj).test();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow