当前位置:  开发笔记 > 编程语言 > 正文

在shared_from_this()中提升weak_ptr_cast

如何解决《在shared_from_this()中提升weak_ptr_cast》经验,为你挑选了1个好方法。

我正在使用boost的共享指针,并enable_shared_from_this启用返回共享指针.代码如下所示:

class foo : public boost::enable_shared_from_this
{
  boost::shared_ptr get()
  {
    return shared_from_this();
  }
}

为什么shared_from_this会抛出weak_ptr_cast异常?



1> stevex..:

如果你在堆栈上声明了foo,那么就没有其他的foo共享指针.例如:

void bar()
{
  foo fooby;
  fooby.get();
}

foob​​y.get()会抛出weak_ptr_cast异常.

要解决这个问题,请fooby在堆上声明:

void bar()
{
  boost::shared_ptr pFooby = boost::shared_ptr(new foo());
  pFooby->get();
}

另一种可能性是你在shared_from_this构造函数完成之前尝试使用,这将再次尝试返回一个尚不存在的共享指针.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有