help-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Compile errors when virtual inheritance used.


From: Gang Of Meemure
Subject: Compile errors when virtual inheritance used.
Date: Wed, 08 Dec 2010 15:42:18 -0000
User-agent: G2/1.0

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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]