When trying to compile this code segment //----------------------------------------------------------------------------- class A { public: virtual void foo(int, int) {} };
class B : public A { }; class C { public: virtual void foo(int) {} }; class D: virtual public B, public C { public: /* void foo(int i, int j) { B::f(i, j); } */ }; class E: public B { }; class F: public D, virtual public E { public: void foo(int i, int j) { D::foo(i, j); } }; //------------------------------------------------------------------------------ Im getting following error main.cpp: In member function virtual void F::foo(int, int): main.cpp:45: error: reference to foo is ambiguous main.cpp:18: error: candidates are: virtual void C::foo(int) main.cpp:5: error: virtual void A::foo(int, int) main.cpp:45: error: reference to foo is ambiguous main.cpp:18: error: candidates are: virtual void C::foo(int) main.cpp:5: error: virtual void A::foo(int, int) How can this be possible ? Clearly function signatures of function foo in class A and C are different. Btw if i uncomment the function foo in class D this compiles with out an error. _______________________________________________ help-gplusplus mailing list help-gplusplus@gnu.org http://lists.gnu.org/mailman/listinfo/help-gplusplus