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

关于类运行时识别的有关问题请

2012-01-31 
关于类运行时识别的问题请高手指点有这样两个类classA:publicCObject{protected:DECLARE_SERIAL(A)}clas

关于类运行时识别的问题请高手指点
有这样两个类
class   A   :   public   CObject
{
protected:
DECLARE_SERIAL(A);
};
class   B   :   public   CObject
{
protected:
DECLARE_SERIAL(B);
};
在程序运行时,如果这样写:
pA是指向A类的一个指针,
if(pA-> IsKindOf(RUNTIME_CLASS(B)))
{
//
}
else
{
}
我的目标是判断一个类指针是指向A类的还是指向B类的,
结果上面的判断代码竟然结果是A类指针是一种B指针

请问高手这是为什么?如果处理?

[解决办法]
IMPLEMENT_SERIAL是不是写错了?
[解决办法]
class A : public CObject
{
protected:
DECLARE_SERIAL(A);
};
class B : public CObject
{
protected:
DECLARE_SERIAL(B);
};

IMPLEMENT_SERIAL(A, CObject, 0)
IMPLEMENT_SERIAL(B, CObject, 0)

void CDemoView::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CObject* pA = new A;
if(pA-> IsKindOf(RUNTIME_CLASS(B)))
{
//
int x =1;
}
else
{
// 实际运行到了这里
int x = 2;
}
}

热点排行