当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

C++基础:MFC的多继承问题

    这几天用几个基础类改写一个C++程序,为了偷懒,使用了继承。

    本来有这个类 CChildThread : public CWinThread

    现在加了个基类CChildThread : public CLIHelper, public CWinThread。

    当时加的时候,犹豫了一下,还是顺手加在CWinThread前面了

    编译正常;运行时却出现很奇怪的错误,发现本来应该是CChildThread 类的一个指针,在调试器中显示为CWinThread类实例,而且到处是类似的错误!

    感觉跟刚加的基类有关,于是将CWinThread提到CLIHelper前面,问题不再出现了。

    回忆起来若干年前就遇到并解决过这个问题。查了一下,果不其然:

    一些宏:DECLARE_DYNAMIC,IMPLEMENT_DYNAMIC,DECLARE_DYNCREATE,IMPLEMENT_DYNCREATE,DECLARE_SERIAL和IMPLEMENT_SERIAL,这些宏在单继承的时候工作得不错,可是对于多继承,出现在IMPLEMENT_DYNAMIC或IMPLEMENT_SERIAL中的必须是在继承关系最左边的基类。

相关内容
赞助商链接