我正在尝试将对象复制到另一个对象。但我的第一个对象有一个属性,指向同一对象内的另一个变量。例如:
int* a;
我想要做的是制作该对象的副本,但通过我的调试器,我可以清楚地看到
int* a;
指向与我复制的对象的int* a;
完全相同的地址。
我希望它指向自己在内存中的位置,而不是改变原始对象。
答案 0 :(得分:0)
您应该为此目的创建一个复制构造函数。 基本复制操作将复制到表面。 (会员明智的副本)
YourClass::YourClass(const YourClass& p) {
x = p.x;
y = p.y;
*a = *(p.a);
}
您应该在构造函数中为指针分配空间。
答案 1 :(得分:0)
在这种情况下,您需要编写赋值运算符和复制构造函数。我将指出一篇更完整的文章,它描述了两者。如有必要,您还可以在网上搜索更多示例。 http://www.cplusplus.com/articles/y8hv0pDG/
如果您有一个符合C ++ 11标准的编译器,那么如果我是你,我也会考虑使用智能指针。