【发布时间】:2012-02-02 20:23:54
【问题描述】:
我有一个派生自 enable_shared_from_this 的类和一个通过调用 shared_from_this() 返回共享指针的方法。我想在该方法中检测对象是否由 shared_ptr 所有,如果不被抛出。我尝试过这样的事情:
shared_ptr<T> getPointer() {
shared_ptr<T> ptr(shared_from_this()));
if(!ptr)
throw "Not owned by smart pointer"
return ptr;
}
这不起作用,因为在 ptr 的构造过程中抛出了一个糟糕的弱指针异常。有没有别的办法。
【问题讨论】:
-
你不能捕捉到异常吗?
-
对不起,我可能是傻了,但听起来你没有问题:你想在某种情况下抛出异常,然后你发现异常已经在在那种情况下,所以你实际上不必做任何特别的事情。没有?
-
我真的不喜欢库中的 try catch 块。就像应用程序的包装器一样。
-
是和否:)。我想专门化异常并给它一个不同于 boost 抛出的文本。
标签: c++ boost c++11 shared-ptr smart-pointers