Hi Benny, Your question is off-topic for the GCC-help forum. Your question is a general C++ question. I do not say this to chastise you, but to help you get your questions answered faster and accurately in a more appropriate forum. That being said... The B::a routine hides the other signatures of the overloaded A::a routines. If you want to bring the A::a routines forward, you need to explicitly say so. You do that by specifying 'using A::a;' in class B: class B : public A { public: using A::a; void a() { } }; HTH, --Eljay