这几天用几个基础类改写一个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中的必须是在继承关系最左边的基类。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9844649/viewspace-580069/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9844649/viewspace-580069/