我是C++ 11中的一些代碼。我有否則使用unique_ptr作爲所有權和原始指針?
class X { /* */ };
class A {
std::vector<X*> va_x;
};
class B {
std::vector<X*> vb_x;
std::vector<A> vb_a;
};
「va_x」我的A級點內的X * s到對象也在我的B類中指出,通過「vb_x」的X * S現在
我會喜歡使用智能指針。對於我來說,似乎很清楚,B類具有由X *所指向的對象的所有權(尤其是因爲我的一個實例屬於B)
所以我應該使用的unique_ptr爲X B內:
class B {
std::vector<unique_ptr<X>> vb_x;
std::vector<A> vb_a;
};
我的問題是,我應該爲A班做些什麼?我應該保留原始指針嗎?通過這樣做,在我的單元測試,我必須承認,它會導致尷尬的事情(IMO),例如(不要擔心封裝,這不是重點):
unique_ptr<X> x(new X());
A a;
a.va_x.push_back(&(*x)); //awkward, but what else can I do?
A.vb_a.push_back(a); //ok
B.vb_x.push_back(move(x)); //ok
對於將來關於C++ 11的問題,請用C++標記它們。 :) – Xeo
你以前不問一個幾乎相同的問題嗎? – Puppy
@DeadMG那麼前一個也是關於unique_ptr,但這不是同一個東西,我認爲 –