Inheritance and method overloading
c++, inheritance, overloading, overriding
Solution
The `B::rofl(int)` 'hides' the `A::rofl()`. In order to have `A`'s `rofl` overloads, you should declare `B` to be `using A::rofl;`.
class B : public A {
public:
using A::rofl;
...
};
This is a wise move of C++: it warns you that you probably also need to override the `A::rofl()` method in `B`. Either you do that, or you explicitly declare that you use `A`'s other overloads.
Problem
Why C++ compiler gives this error? Why i can access lol() from B, but can not access rofl() [without parameters]. Where is the catch? ``` 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; } ```