When im 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::foo(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. ps: g++ version used [gcc version 4.3.2 [gcc-4_3-branch revision 141291] (SUSE Linux) ] _______________________________________________ help-gplusplus mailing list help-gplusplus@gnu.org http://lists.gnu.org/mailman/listinfo/help-gplusplus