定义一个类:
class CMulPoint : public CObject
{
public:
   CPoint point;
   int   time;
public:
CMulPoint()
{
} CMulPoint(CMulPoint& mulpoint)
{
 point=mulpoint.point;
 time=mulpoint.time;
}
    CMulPoint& operator=(const CMulPoint& mulpoint)
{
           point=mulpoint.point;
  time=mulpoint.time;
  return(*this);
}
};定义一个数组:
CArray<CMulPoint,CMulPoint>  m_pointArray;CMulPoint mulpoint;mulpoint.point.x=1;
mulpoint.point.y=3;
mulpoint.time=38;
m_pointArray.Add(mulpoint);
假设数组中上一个元素的值为:point=(2,2);time=23;
执行完m_pointArray.Add(mulpoint);后,他开辟了一个新的空间,但他的值和上一个元素的值相同,而不是新的值,怎么回事哪?
数组中的元素我换成CPoint也不行,为什么阿?

解决方案 »

  1.   

    example : CArray<CPoint,CPoint> ptArray;
    CPoint pt(10,20);
    ptArray.Add(pt);             // Element 0
    ptArray.Add(CPoint(30,40));  // Element 1
    for (int i=0;i < ptArray.GetSize();i++)
    {
       CPoint& pt = ptArray.ElementAt(i);
       cout<<pt.x <<","<<pt.y <<endl;
    }
    output :
    10,20
    30,40应该是你其他地方的问题
      

  2.   

    这个你验证过吗?
    我验证了一下,不对阿,我知道msdn有例子。但就是不对。
      

  3.   

    CArray<CMulPoint,CMulPoint>  m_pointArray;CMulPoint *mulpoint = new CMulPoint ;mulpoint->point.x=1;
    mulpoint->point.y=3;
    mulpoint->time=38;
    m_pointArray.Add(&mulpoint);
    ...
    new 
    Add
    地址的问题。
      

  4.   

    CArray<CMulPoint,CMulPoint>  m_pointArray;
    ============改成
    CArray<CMulPoint,CMulPoint&>  m_pointArray;
      

  5.   

    to :楼主,当然是试过了的!没有试验,我不会乱说!!to:xlzxlich(阳光)1 template < class TYPE, class ARG_TYPE = const TYPE& >
    class CArray :
       public CObject
    2 INT_PTR Add(
       ARG_TYPE newElement 
    );
    3 CArray<CPoint,CPoint> ptArray;请看清楚,不要胡说一通!!!
      

  6.   

    to newcore:
    你把:
    CPoint pt(10,20);
    ptArray.Add(pt);             // Element 0
    ptArray.Add(CPoint(30,40));  // Element 1
    改成:
    CPoint pt(10,20);
    ptArray.Add(pt);             // Element 0
    pt = CPoint(30,40);
    ptArray.Add(pt);            // Element 1
    再试试看呀?!
      

  7.   

    刚才去吃饭了,代码未调试,下面代码调试通过。
    CArray<CMulPoint,CMulPoint>  m_pointArray;CMulPoint *mulpoint = new CMulPoint;mulpoint->point.x=1;
    mulpoint->point.y=3;
    mulpoint->time=38;
    m_pointArray.Add(*mulpoint);mulpoint = new CMulPoint;
    mulpoint->point.x=2;
    mulpoint->point.y=2;
    mulpoint->time=23;
    m_pointArray.Add(*mulpoint);
      

  8.   

    to newcore:
    看到底谁没清楚,在胡说一通!!!
      

  9.   

    to: xlzxlich(阳光) 不要激动,看看你开始写的,如下:
    CMulPoint *mulpoint = new CMulPoint ;mulpoint->point.x=1;
    mulpoint->point.y=3;
    mulpoint->time=38;
    m_pointArray.Add(&mulpoint);这是你后来写的:
    CMulPoint *mulpoint = new CMulPoint;mulpoint->point.x=1;
    mulpoint->point.y=3;
    mulpoint->time=38;
    m_pointArray.Add(*mulpoint);如果你硬要把这两个划等号的话,那我服...好了,到此为只,over!!
      

  10.   

    to newcore:
     sorry. 昨天心情不太好。请原谅。