我想将原始指针成员包装到一些智能指针,以防止在开发类中删除。指针下对象的所有者在类之外。所以,看起来boost::shared_ptr
和std::auto_ptr
不合适。下面是一个简化的例子:
class Foo {
boost::weak_ptr<Bar> m_bar;
public:
void setBar(const Bar *bar) { // bar created on heap
m_bar = bar; // naturally compilation error
}
};
当然,它会导致编译错误。weak_ptr
从原始指针(如果存在)初始化的正确方法是什么?