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

被虚函数搞糊涂了,大神们进来帮忙解释上

2012-11-07 
被虚函数搞糊涂了,大神们进来帮忙解释下void CDbInterface::LoadParaCallback(LPVOID arg,LPVOID threadar

被虚函数搞糊涂了,大神们进来帮忙解释下
void CDbInterface::LoadParaCallback(LPVOID arg,LPVOID threadarg)
{
CWorkItem* pWork=(CWorkItem*)arg;
CDbInterface* pDb=(CDbInterface*)threadarg;
CDbResult* pDbResult=(CDbResult*)pWork->Arg;

//pDbResult->m_pResult=NULL;
//pDbResult->m_nCount=0;
//return ;

//if(pDbResult->m_ActType!=_update_del)//按各自编码加载
{
if(pDbResult->m_ParaType==_loadrtupara)
pDbResult->m_pResult=pDb->LoadRtuPara(pDbResult->m_ID,pDbResult->m_nCount);

LoadRtuPara()是个在CDbInterface里声明的虚函数,CDbInterface有两个子类A和B,A和B里都重写了这个虚函数,这里pDb调用的是哪个类的LoadRtuPara()函数啊。。。。。。

[解决办法]
你的threadarg是怎么传递进来的?
Debug下F11进入看看不就清楚了~
[解决办法]
这就要看你的 那个基类指针, 它指向A类的对象,则调用A的,指向B的,则调用B的.

CDbInterface* pDb=(CDbInterface*)threadarg;

在你的代码中, 就由 threadarg 来决定了, 你调用LoadParaCallback的时候传入的是A类还是B类对象的指针呢.

热点排行