小编mar*_*ino的帖子

我有一个引用,想要调用一个带有boost :: shared_ptr的函数

我有一个对象的引用,并希望调用一个函数,该函数接受此对象的boost :: shared_ptr.如果我从堆栈中取消boost :: shared_ptr而不是取消对象,那么我构建一个boost :: shared_ptr来进行调用!这正是我运行此代码时发生的情况:

double f(boost::shared_ptr<Obj>& object)
{
  ...
}

double g(Obj& object)
{
  boost::shared_ptr<Obj> p(&object);
  double x = f(p);
  ...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法让它发挥作用?我怎样才能在g()中创建一个boost :: shared指针,让我的对象在结束时保持活着状态?我想我必须将它连接到已经指向对象的其他共享指针的引用计数机制......但是如何?

即使我让它成功,你认为这种做法是糟糕的设计吗?解决这类问题的最佳做法是什么?在我的代码中,我有对象和方法都可以使用共享指针和引用,我不能只使用这些或那些......

c++ reference shared-ptr

3
推荐指数
1
解决办法
131
查看次数

标签 统计

c++ ×1

reference ×1

shared-ptr ×1