怎么判断某个指针是由哪个类生成的?例如:class P
{
};class A : public P
{
};class B : public P
{
};P *pp1,*pp2;pp1 = new A();
pp2 = new B();在以后的代码里,怎么判断出 pp1 是由 A 生成的,而 pp2 是由 B 生成的?

解决方案 »

  1.   

    用MFC加入运行时识别宏
    标准c++的typeid还没用过
      

  2.   

    试试这样:
    if (pp1->GetRuntimeClass()->IsDerivedFrom(RUNTIME_CLASS(A)))
    {
      TRACE(_T("Object is derived from A\n"));
    }
    不过前提是你的基类是从CObject继承下来的。
      

  3.   

    你这儿应使用dynamic_cast Operator
      

  4.   

    不是从 CObject 继承的。用 typeid 试验了,不行。 都返回 class P *
      

  5.   

    typeid operator也可
    // compile with: /GR /EHsc
      

  6.   

    UP.学到东西了.在C里面不行吧?
      

  7.   

    在以后的代码里,怎么判断出 pp1 是由 A 生成的,而 pp2 是由 B 生成的?--最好理解的就是用虚函数.也比较适合多态的概念
      

  8.   

    参考:
    BOOL bIsSizingBar = 
                pBar->IsKindOf(RUNTIME_CLASS(CSizingControlBar));
    判断pBar是不是CSizingControlBar类的指针!!