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

直接调用纯虚函数什么意义?解决办法

2012-02-08 
直接调用纯虚函数什么意义?如下面的调用:voidCManager::Run(){while(WaitForSingleObject(m_hKillEvent,0)

直接调用纯虚函数什么意义?
如下面的调用:
void   CManager::Run()
{
while(   WaitForSingleObject(m_hKillEvent,   0)   !=   WAIT_OBJECT_0   ){
PTRMSG   pMsg   =   m_msgQueue.WaitForNormalMessage(1000);
if(   pMsg   ){
OnMessage(pMsg);
DeleteMessage(pMsg);
}
}
}

该函数所在是Manager.cpp文件,其在头Manager.h文件中的定义为:
virtual   BOOL   OnMessage(PTRMSG   pMsg)   =   NULL;

这里的OnMessage(pMsg)是直接调用纯虚函数吧?有什么意义呢?




[解决办法]
CManager是纯许类,需要对进行实例化才可以使用,那时OnMessage就有实现了
OnMessage(pMsg)和DeleteMessage(pMsg)不是CManager 的函数吗? 你不把头文件列出来,鬼知道OnMessage(pMsg)和DeleteMessage(pMsg)是什么东西
[解决办法]
再土问个,为何OnMessage(pMsg)和DeleteMessage(pMsg)的调用是直接调用,函数前没有对象呢?:)
=================================
因为调用者和被调用者都是一个类或类族.


[解决办法]
这里的OnMessage(pMsg)是直接调用纯虚函数吧?有什么意义呢?
======================================
如果CManager本身是基类.且是声明OnMessage(pMsg)的类.那么它的派生类一定要改写OnMessage()函数. 这就成了CManager::Run()中调用一个还不存在的留待后来实现的函数. 这是框架的基本做法.

热点排行