考虑这段代码:
class A : public std::enable_shared_from_this<A>
{
public:
std::shared_ptr<A> f()
{
return shared_from_this();
}
};
int main()
{
A a;
std::shared_ptr<A> ptr = a.f();
}
这段代码在 Visual Studio 2017 中终止。我想我在这里做错了什么。谁能帮我这个?我想要一个由shared_from_this()创建的shared_ptr。
Because a
不属于共享指针。从参考参数 http://en.cppreference.com/w/cpp/memory/enable_shared_from_this/shared_from_this:
仅允许在先前共享的对象上调用shared_from_this,即在由 std::shared_ptr 管理的对象上。否则,行为未定义(直到 C++17)std::bad_weak_ptr 被抛出(由来自默认构造的weak_this的shared_ptr构造函数)(自C++17起)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)