Resolución de sobrecarga de C ++ [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Función con el mismo nombre pero con firma diferente en la clase derivada 2 respuestas Dado el siguiente ejemplo, ¿por qué tengo que usar explícitamente la declaraciónb->A::DoSomething()
en lugar de solob->DoSomething()
?
¿No debería la resolución de sobrecarga del compilador averiguar de qué método estoy hablando?
Estoy usando Microsoft VS 2005. (Nota: el uso de virtual no ayuda en este caso).
class A
{
public:
int DoSomething() {return 0;};
};
class B : public A
{
public:
int DoSomething(int x) {return 1;};
};
int main()
{
B* b = new B();
b->A::DoSomething(); //Why this?
//b->DoSomething(); //Why not this? (Gives compiler error.)
delete b;
return 0;
}