无意中修改了对象的副本
Inadvertently modifying a copy of my object
>我有一个函数,我在其中传递指向MyClass
数组的指针,我想在函数中创建一个对象并将其存储在数组中。目前,我无意中修改了对象的副本,因此当函数返回时,MyClass 的数组不包含我所做的更改。我应该如何更改此设置?我认为一个简单的解决方法是将添加对象移动到最后的数组中,但是有什么方法可以修改对新创建的对象的引用吗?
void x(MyClass* a){
//Create object on stack
MyClass my_obj(30);
//Add object to array
a[30] = my_obj;
//These changes don't get made because the object in the array is a copy
//of the object I created on the stack.
my_obj.datamember[0] = 3;
my_obj.datamember[1] = 7;
//The array is "returned" because I am passing by pointer
}
请改用vector<MyClass>
。 然后,您可以简单地执行以下操作:
a.push_back(my_obj);
和
a.erase(a.remove(/*...*/));
相关文章:
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 如何从构造函数副本 T(const T&)调用对象 T?
- C ++引用函数参数似乎包含原始对象的副本,而不是充当"real reference"
- 将(临时的?)std::string传递给使用它来构造一个接受副本的对象的函数的最佳方法是什么?
- 将 Eigen::MatrixXd 转换为 arma::mat 并在新对象上制作副本
- C++ 在其自己的类中创建对象的修改副本
- 如何不删除基类对象的副本?
- 属于副本被推送到矢量的对象的指针会发生什么情况?
- 如何确保将对象通过许多层的组件时,不会制作副本
- C++ 如何创建链表的副本作为类对象
- 保留对象成员变量的本地副本
- 如何为同一类对象的成员函数保留单独的变量副本?
- 是 std::make_pair 在将对象添加到地图时创建副本
- 阻止用户创建班级对象的副本,但允许动态的对象有什么好处
- 替代STD ::向量存储参考而不是对象的副本
- 如何使智能指针指向对象的副本
- C 模板功能,相同类型,多个实例:共享一个相同的代码副本?即使在不同的CPP/对象文件中
- 使用矢量push_back代码创建对象副本时遇到问题
- 在C++中跨进程边界发送对象的深层副本
- 创建对象的副本以进行多重比较是一种很好的做法