楼主没弄明白virtual 加在class前面的意思吧。
这里的virtual是定义一个虚的父类。
比如说在你的例子里面,CD和CA之间并没有直接关系。
而是由中间的虚父类CB和CC代替了。
所以你应该这样声明:
class CA;
class CB : virtual public CA;
class CC : virtual public CA;
class CD : public CB, public CC;
这样就可以符合你的要求了。
回来了,回答你吧。。
virtual这个东西一般用在从某个基类派生的一类基类上。
比如说有个基础类叫:
class CHuman;
然后从中派生出男人和女人,就应该用virtual来继承CHuman,因为男人和女人也是基类。
class CMaleHuman : virtual public CHuman;
class CFemaleHuman : virtual public CHuman;
这个一般就只用在这一种情况下。