有这样两个类
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指针请问高手这是为什么?如果处理?

解决方案 »

  1.   

    没错,上面的代码示例有点写得不对,类A与类B是从baseClass继承来的,
    而baseClass是从CObject继承来的,系列化存入与写出都没有问题,IMPLEMENT_SERIAL(baseClass, CObject, 0)
    IMPLEMENT_SERIAL(A, baseClass, 0)
    IMPLEMENT_SERIAL(B, baseClass, 0)
      

  2.   

    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;
     }
    }