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;
}
Était-ce utile?

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
scroll top