为什么无法从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;
试试