CTypedPtrList<CPtrList,TBPOINT*> m_TabuList;//一个CTypedPtrList数组,
                          //TBPOINT是我自己定义的一种数据类型.
我在CMyAppDoc中定义了TBPOINT ptNode[10].
后面也给他们服了值,是不是可以这样
    TBPOINT *tmpNode;
    *tmpNode=ptNode[3];
    m_TabuList.addHead(tmpNode);
还是非要:
    TBPOINT *tmpPoint;
    tmpPoint=new TBPOINT;
    tmpPoint=&(PtNode[3]);
    m_TabuList.AddTail(tmpPoint);
对于一个CTypedPtrList来说,new一个对象是不是有必要???
请指教!!

解决方案 »

  1.   

    TBPOINT *tmpNode;
        *tmpNode=ptNode[3];
        m_TabuList.addHead(tmpNode);这是局部变量,想想他们的生存周期
    我认为必须要new
      

  2.   

    需要自己 new / delete , CTypedPtrList 不负责管理对象的生存周期,此外定义
    typedef ptNode[10] TBPOINT; 不太好, 会导致以下情况TBPOINT * p = new TBPOINT;
    delete[] p;  // 必须用 delete[] 因为 TBPOINT 实质上是数组// 此外,拷贝和添加应该这样写
    ptNode PtNode[3] = ...;TBPOINT *p = new TBPOINT;
    memcpy(p, PtNode, sizeof(ptNode[3]));
    m_TabuList.AddTail(p);