我知道使用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();
答案 0 :(得分:2)
只要您在创建delete
(或std::unique_ptr
!)对象后手动std::shared_ptr
对象,就可以了。
在您要求p
(或std::unique_ptr
)取得其所有权后,您还应该避免取消引用指针std::shared_ptr
。而是使用智能指针对象。