首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么理解这个继承有关问题

2012-03-18 
如何理解这个继承问题templateclassInterfaceclassInterfaceImpl:publicvirtualCObjRoot,publicInterfac

如何理解这个继承问题
template   <class   Interface>
class   InterfaceImpl:   public   virtual   CObjRoot,   public   Interface
{
};

template   <class   ThreadModel   =   CSingleThreaded   >
class   CComBase     :   public   virtual   CObjRoot   ,     public   ThreadModel
{
};

class   CmyInterface   :   public   CComBase <>   ,   public   InterfaceImpl <ImyInterface>  
{
};

这个是我网上下载到一段有关COM的代码,大家帮忙看看!

CmyInterface   继承InterfaceImpl <ImyInterface>   ,再看InterfaceImpl,继承Interface,而ImyInterface就是模板参数,所以InterfaceImpl也继承自CmyInterface,

这样是不是形成了一个循环继承,   不知道我这样理解有没有错,这段代码是可以通过编译的,而我写了一段模拟循环继承的代码却不能通过,报错:base   class   undefined

这是我写的代码:

#include   <iostream>

using   namespace   std;

class   A;

class   B
{
public:
B(){cout < < "This   is   B " < <endl;}
~B(){cout < < "B   is   about   to   deconstruct " < <endl;}
};

class   C:   public   B,public   A
{
public:
C(){cout < < "This   is   C " < <endl;}
~C(){cout < < "C   is   about   to   deconstruct " < <endl;}
};

class   A:   public   C
{
public:
A(){cout < < "This   is   A " < <endl;}
~A(){cout < < "A   is   about   to   deconstruct " < <endl;}
};

int   main()
{
    A   a;
   
return   0;
}


[解决办法]
class CmyInterface : public CComBase <> , public InterfaceImpl <ImyInterface>
CmyInterface ==》ImyInterface

热点排行