以下の場合があります。それは私がやろうとしているものです:C++でオブジェクトを参照でコピーする方法は?
std::vector <Shape> shapesArr;
Shape *shape = new Shape();
shape->someParam = someValue;
shapesArr.push_back(Shape);
// ...
Shape *shape2 = new Shape();
shape2 = shapesArr[ 0 ]; // <-- here I need a copy of that object to shapeA
delete[] shapesArr;
delete shape2; // <-- error, because it has already freed. It would be nice if I had a copy of shapesArr[ 0 ] in my shape2
適切shape2し、そのオブジェクトをコピーする方法は?私は、shapeArr [0]とshape2に別々に格納されるそのオブジェクトの2つのコピーが必要です。
あなたは 'shapes'を' new'で割り当てなかったのですが、なぜ 'delete'を呼び出したいのですか? – Arash
あなたの 'vector'は' Shape'を保存し、ヒープに 'Shape'を割り当て、それを無視し、' push_back'した 'shape'が間違っていても'vector'は' Shape'ではなく 'Shape'を格納しているからです)。ヒープ上にもない 'shapesArr'' vector'を 'delete []'しようとします。このコードは決してコンパイルされません。 [MCVE]を作ってください。これは役に立たない。私はここでの本当の答えは、 "ヒープをまったく使わず、すべてがうまくいく"と思っています。 – ShadowRanger