读书人

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

发布时间: 2012-03-18 13:55:39 作者: rapoo

如何理解这个继承问题
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

读书人网 >C++

热点推荐