我是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,但这不是同一个东西,我认为 –