cuando se accede a foo() de "base" usando el objeto de clase derivada.acceso de la clase base con objeto de clase derivada que tiene un método de mismo nombre
#include <iostream>
class base
{
public:
void foo()
{
std::cout<<"\nHello from foo\n";
}
};
class derived : public base
{
public:
void foo(int k)
{
std::cout<<"\nHello from foo with value = "<<k<<"\n";
}
};
int main()
{
derived d;
d.foo();//error:no matching for derived::foo()
d.foo(10);
}
cómo acceder al método de clase base que tiene un método del mismo nombre en la clase derivada. se ha mostrado el error generado. me disculpo si no estoy seguro pero siento que me he dejado claro como el agua. gracias de antemano.
pero por qué no se puede acceder a la clase base foo() en clase derivada mientras he heredado esa clase base ... –
@ashish: Es accesible (lo que significa especificadores de acceso de público/protegido/privado), pero es * oculto*. Lea la pregunta Josh vinculado: http://stackoverflow.com/questions/1628768/why-does-an-overridden-function-in-the-derived-class-hide-other-overloads-of-the –
oh ¡menos mal, yo estaba a punto de crear contenedores para delegar a las sobrecargas de base que se convirtió ocultos sólo para exponerlos del objeto derivado, algo así como 'void foo() {:: base de foo()}', y luego pensé que debe haber una manera mejor para hacer esto, y afortunadamente, sí, hay. También existe la opción de hacer 'd.base :: foo()', pero desde una perspectiva del lado del cliente que parece un poco molesto. – solstice333