¿Por qué el compilador de C++ da este error? Por qué puedo acceder a lol() desde B, pero no puedo acceder a rofl() [sin parámetros]. ¿Dónde está la captura?Sobrecarga de herencia y método
class A
{
public:
void lol(void) {}
void rofl(void) { return rofl(0);}
virtual void rofl(int x) {}
};
class B : public A
{
public:
virtual void rofl(int x) {}
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
a.lol();
a.rofl(1);
a.rofl();
B b;
b.lol();
b.rofl(1);
b.rofl(); //ERROR -> B::rofl function does not take 0 arguments
return 0;
}
+1 Más rápido que mi compañero :) – AraK
sí, pero A :: rofl() no es virtual. Esa es la idea: rofl() siempre llama virtual rofl (0). –
@ 0xDEAD BEEF: en ese caso, usted _intend_ para usarlo, así que deje en claro al compilador diciendo 'using A :: rofl;'. – xtofl