如何在C++中移动指针?

Val*_*ion 1 c++

这是一个愚蠢的问题,但我不知道如何实现这一目标.

我有一个对象和一个向量.在执行期间的设定时间,我需要将此对象放在向量中并使用新对象覆盖此对象.我现在有这个,

std::vector<Cube*> cubes;
Cube* workingCube = new Cube();
...
cubes.insert(cubes.begin(), workingCube);
workingCube = new Cube();
Run Code Online (Sandbox Code Playgroud)

由于一些与指针相关的原因,我认为这是错误的.我无法弄清楚如何正确地做到这一点.

Jam*_*lis 10

如果我们避免使用指针和显式动态分配,它会更加清晰并且更不容易泄漏:

std::vector<Cube> cubes;

Cube workingCube;
cubes.insert(cubes.begin(), workingCube);
workingCube = Cube();
Run Code Online (Sandbox Code Playgroud)

如果Cube复制昂贵但移动便宜,你可以std::move(workingCube)进入容器.如果Cube移动和复制都很昂贵,请使用a std::unique_ptr<Cube>并将其移动到容器中.

无论你做什么,都不要使用原始指针来拥有东西.