我知道用std::shared_ptr
这样做是不明智的。但是std::unique_ptr
怎么样?例如。 :
class A {
public:
void do_something() { };
};
std::vector<std::unique_ptr<A> > uq_ptrs_;
auto p = new A();
uq_ptrs_.push_back(std::unique_ptr<A>(p));
p->do_something();
只要你在创建delete
(或std::unique_ptr
!)对象后没有手动std::shared_ptr
对象,那么它没关系。
一旦你要求p
(或std::unique_ptr
)取得它的所有权,你也应该避免取消引用指针std::shared_ptr
。而是使用智能指针对象。