我在DLGA中使用DoModal()方式生成了DLGB。
DLGB中还有一个CPtrList类型的成员m_pSendList;DLGB中有一个按钮A,每按一下。
往m_pSendList中添加一个成员。
但我在DLGB中按OK返回DLGA之后,我在DLGA中得不到正确的m_pSendList所含的成员内容。但成员数量是对的。
不明白是怎么回事,是不是我CPtrList使用有问题啊?

解决方案 »

  1.   

    你在dlgA中引用m_pSendList时,m_pSendList中指针指向的对象是否已经销毁?
      

  2.   

    在引用m_pSendList中指针时,应该用强制类型转换。(CmyObj *)m_pSendList.GetAt(pos)
      

  3.   

    我现在做了如下修改:
    将CPtrList类型的成员m_pSendList移至DLGA中,
    在DLGB中使用AfxGetApp()->m_pMainWnd得到DLGA的指针,
    使用DLGA的指针对m_pSendList进行添加成员。
    但内容还是不对,真奇怪!我用DLGA的指针列表指着DLGB中的对象,DLGB销毁了,
    DLGA的指针列表指着数据也会变化吗?
      

  4.   

    类型转换我已使用。(CmyObj *)m_pSendList.GetHead()
      

  5.   

    CTypedPtrList怎么使用?
    我用CTypedPtrList替换CPtrList出错。
      

  6.   

    CTypedPtrList:
    template< class BASE_CLASS, class TYPE >
    class CTypedPtrList : public BASE_CLASS
    -------------------------------------------------
    参数说明:
    BASE_CLASS:链表的基类类型,必须是CObList 或者 CPtrList。基类如果是CObList,链表可以串行化,CPtrList则不行。
    TYPE:链表元素的类型
    -------------------------------------------------
    比如:
    typedef CTypedPtrList<CObList, CmyObj*>  CMyList;
      

  7.   

    但我在DLGB中按OK返回DLGA之后,我在DLGA中得不到正确的m_pSendList所含的成员内容。你所说的 得不到正确的m_pSendList所含的成员内容,是指得到的成员指针指向的对象无效吗?DLGB中有一个按钮A,每按一下。
    往m_pSendList中添加一个成员。你是如何构造你的成员的,如果是在栈中,那肯定不行