Problem 1: Ambiguity
class A { class B { int x; char y; public: public: A(int _x): x(_x){} B(char _y): y(_y){} void print() void print() { cout << x << "\n"; } { cout << y << "\n"; } }; }; class C: public A, public B { float z; public: C(int _A, char _B, float _z) : A(_A), B(_B), z(_z){} void printC() { cout << z << "\n"; } };
C c(1, 'A', 3.3); c.print(); // error: ambigous request for function from // distinct base classes of type `C' // first candidate `void B::print()' // second candidate `void A::print()'