class A { public: virtual int foo() { return 1; } }; class B { public: int foo() { return 2; } }; class C : public A, public B {}; int main() { /// return C().foo(); // request for member 'foo' is ambiguous C c; A* a = &c; return a->foo(); } #if 0 yzaytsev:/home/yzaytsev % /usr/bin/g++ ./mult.cpp -o mult yzaytsev:/home/yzaytsev % ./mult yzaytsev:/home/yzaytsev % $? 1: Command not found.