有: CTypedPtrList<CObList,CObject*> m_strokeList;
又有:
class CCircle : public CObjectclass CRectangle:public CObjectclass CStroke:public CObject这三个类同时随机的连接在链表中。我要逐个的把他们取出来然后画在窗口上。问:我改如何判断他们的类别,根据类别画出来

解决方案 »

  1.   

    或者 typeid(*class).name()
      

  2.   

    你这种情况应该用继承,而不是用这些东西。typeid少用为好。
      

  3.   

    看下面的源代码:
    void CHellompcView::OnDraw(CDC* pDC)
    {
    CHellompcDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    POSITION pos = pDoc->m_strokeList.GetHeadPosition();
    while(pos!=NULL)
    {
       LPVOID pStroke = pDoc->m_strokeList.GetNext(pos);
        pStroke->IsKindOf(RUNTIME_CLASS(CStroke));
               pStroke->DrawStroke(pDC);


    }
    }这样编译通不过,那个帮我改正改正,谢谢!郁闷了一晚上。
      

  4.   

    CStroke类有DECLARE_DYNAMIC, DECLARE_DYNCREATE, or DECLARE_SERIAL 这些属性吧,要不
    RUNTIME_CLASS可能不认识,记不准了,楼住自己看看吧
      

  5.   

    有的:用的是DECLARE_SERIAL  ,它包含了DECLARE_DYNAMIC, DECLARE_DYNCREATE
    IMPLEMENT_SERIAL(CStroke, CObject, 1)
    IMPLEMENT_SERIAL(CRectangle,CObject,1)
    IMPLEMENT_SERIAL(CCircle,CObject,1)
      

  6.   

    有的:用的是DECLARE_SERIAL  ,它包含了DECLARE_DYNAMIC, DECLARE_DYNCREATE
    IMPLEMENT_SERIAL(CStroke, CObject, 1)
    IMPLEMENT_SERIAL(CRectangle,CObject,1)
    IMPLEMENT_SERIAL(CCircle,CObject,1)