新手C++程序員在這裏。比方說,我有一個嵌套類Inner的Outer類。 Inner包含一個指針成員,在構造期間設置爲Outer。外部包含一個函數AddNewInner(),它創建一個指向自身的新Inner,並將其添加到向量中。如何將包含指針成員的嵌套類的類實例複製到外部類?
class Outer {
public:
class Inner {
public:
Inner(Outer* outerParent) : mOuterParent(outerParent) {}
Outer* mOuterParent;
}
void AddNewInner() {
Inner newInner(this);
mInnersVec.push_back(newInner);
}
vector<Inner> mInnersVec;
}
在創建Outer的新實例並調用AddNewInner()以將Inners添加到向量時,此工作正常。然而,當我嘗試創建外部實例的副本時,我遇到了一個問題:內部副本的Inners矢量不指向副本(它本身),它們仍指向原始外部。
Outer outerA;
outerA.AddNewInner();
Outer* ptrA = outerA.mInnersVec[0].mOuterParent; // this points to outerA, good!
Outer outerB = outerA;
Outer* ptrB = outerB.mInnersVec[0].mOuterParent; // this still points to outerA, bad!
我需要內部件的載體的拷貝來拷貝,而不是原來的。完成此事的最佳方式是什麼,或者可能有另一種方法來做同樣的事情?
啊....你需要閱讀複製構造函數。 Google複製構造函數,深度複製,淺拷貝。那裏有很多參考資料。 – cplusplusrat