由於其中一個對象中的指針問題,我想出了一些想法如何在我的應用程序中設計對象複製的問題。最簡單的模式是這樣的:在指定運算符中複製指向另一個列表元素的指針
MyMapClass.h
class MyMapClass
{
public:
std::vector<Point> points;
std::vector<Road> roads;
MyMapClass& operator=(const MyMapClass&);
}
MyMapClass.cpp
MyMapClass& MyMapClass::operator=(const MyMapClass& m)
{
points = m.points;
roads = m.roads; // here is error
return *this;
}
Point.h
class Point
{
public:
std::string name;
std::vector<float> position;
}
Road.h
class Road
{
public:
Point* source;
Point* destination;
}
最初設計時沒有需要複製MyMapClass
對象,我花了一段時間才能發現這個錯誤。
據我現在的理解,當我將兩個向量複製到roads
到source
和destination
的元素中的新對象地址時,它們保持不變。所以當舊對象被銷燬時,roads
元素中的指針只會指向垃圾。
你會如何推薦複製roads
向量,以便它的元素將指向新的對象?
升級'road'類,以便它可以正確複製自身。 – Unimportant
@ user1320881我在想它,但會知道新的點地址嗎? – sebap123