Pregunta

¿Es posible acceder a una función de la clase base que tiene la misma firma que la de una función de clase derivada utilizando un objeto de clase derivada ?. He aquí una muestra de lo que estoy afirmando a continuación ..

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;
}
¿Fue útil?

Solución

Es necesario calificar totalmente el nombre del método, ya que entra en conflicto con la heredada.

Utilice obj.base1 :: test ()

Otros consejos

No se puede reemplazar un método en la clase derivada si usted no proporcionó una palabra clave virtual.

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;
}

Así que el código es incorrecto. Usted tiene que dar:

virtual void test();

en su clase base

Puede utilizar esta:

((base)obj).test();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top