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

Reply via email to