无意中修改了我的对象的副本

时间:2014-04-03 00:26:08

标签: c++ pointers deep-copy

我有一个函数,我传入一个指向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
} 

1 个答案:

答案 0 :(得分:0)

请改用vector<MyClass>。然后你可以简单地做一些事情:

a.push_back(my_obj);

a.erase(a.remove(/*...*/));