智能指针问题

Max*_*rai 4 c++ boost pointers smart-pointers

我用智能指针重写我的代码.我有这样的情况:

void Foo(SomeClass *p) { }
boost::shared_ptr<SomeClass> p(new SomeClass);
Run Code Online (Sandbox Code Playgroud)

现在该做什么:从wrapper(p.get())传递原始指针或重写函数参数并直接传递智能指针,如:

void Foo(boost::shared_ptr<Foo> obj) { }
Run Code Online (Sandbox Code Playgroud)

我不确定.据我所知,智能指针应遵循一些指针,看看它是否仍然需要在程序中.所以我们可以传递原始指针.

CB *_*ley 5

除非Foo需要采取(共享)所有权,*p否则应保持签名相同并且只是通过p.get().它是最简单,最灵活的选项,同时也需要对现有代码进行最少的更改.

  • 缺点是tyou必须非常确定`Foo`中的普通指针不受其他智能指针的控制.既不是现在,也不是在以后的维护更新期间. (2认同)