Friday, August 04, 2006

Multiple class derivation

class A
{
public:
void a(){printf("hi\n");}
};
class B:public A{};
class C:public A{};
class D:public B, public C {};

D d;
d.a(); // ambiguous, error
d.B::a(); // OK
d.C::a(); // OK

To avoid ambiguities, use 'virtual'

class A
{
public:
void a(){printf("hi\n");}
};

class B:public virtual A{};
class C:public virtual A{};
class D:public B, C {};

D d;
d.a();



No comments:

Post a Comment