[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.
- Compile errors when virtual inheritance used.,
Gang Of Meemure <=