Perché il compilatore C++ restituisce questo errore? Perché posso accedere a lol() da B, ma non posso accedere a rofl() [senza parametri]. Dov'è il trucco?Ereditarietà e sovraccarico di metodi
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 Più veloce del mio compagno :) – AraK
sì, ma A :: rofl() non è virtuale. Ecco l'idea - rofl() chiama sempre rofl virtuale (0). –
@ 0xDEAD BEEF: in tal caso, si _intend_ per usarlo, quindi rendi chiaro al compilatore dicendo "using A :: rofl;". – xtofl