首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为啥无法从CArray中GetAt对象

2012-08-08 
为什么无法从CArray中GetAt对象?为节省大家宝贵时间,我把代码彻底简化了(比如成员全声明为public),只留下

为什么无法从CArray中GetAt对象?
为节省大家宝贵时间,我把代码彻底简化了(比如成员全声明为public),只留下问题。这段代码作为头文件可直接粘贴进MFC程序运行(需加上函数调用)。

我想不明白的是:为什么将一个好端端的对象Add进CArray之后,取出来就变成一个像刚new出来似的崭新的对象了?毕竟我已经定义拷贝构造函数和重载=运算符了啊……即使将模板类写成CArray<MyClass, MyClass&>,结果仍然不正确。

只好求助大家了。谢谢!

#include <afxtempl.h>
class MyClass
{
public:
  int num;

  MyClass() { } // 构造函数
  MyClass(MyClass &myclass) { num = myclass.num; } // 拷贝构造函数
  MyClass operator=(MyClass &myclass) // =运算符重载
  {
  MyClass temp;
  temp.num = myclass.num;
  return temp;
  }
};

void ShowExcel()
{
  CArray<MyClass, MyClass> result;
  MyClass myclass;
  myclass.num = 1234;
  result.Add(myclass);
  MyClass obj = result.GetAt(0); // obj.num == 0, 而不是 1234.
}

[解决办法]
CArray<MyClass, MyClass> result;
改为 CArray<MyClass, MyClass&> result;
试试

热点排行