我在使用shared_ptr和weak_ptr以及enable_shared_from_this时遇到了问题。 当我搜索我看到的症状时,每个人都建议“当没有shared_ptr实例拥有您的对象时,您不能使用shared_from_this()。 但这不是我的情况。 考虑以下代码: #i...
class MyClass { public: MyClass(std::weak_ptr<MyClass> parent){} } 我想要做这个:auto newInstance = std::make_shared<MyClass>(nullptr); 或...
例如,有一个函数用于查找对象并返回shared_ptr,如果未发现该对象,则必须以某种方式指示未发现任何对象。std::vector<std::shared_ptr> Storage::objects; std::shared_ptr<Object> Storage:...
C++11的std::shared_ptr<>提供了一种bool运算符。 operator unspecified-bool-type() const; 由于类型bool的隐式转换存在危险, 所以它不是一个简单的operator bool() const。 为什么std::...
相较于使用原始指针所采用的一些高级技术(但不仅限于此),每种智能指针的等效用法是什么? 我的理解很少,但从我所了解到的: 原始指针:只有在您确实非常非常非常非常地知道自己在做什么并已经在接口后小心隐藏了用法时才使用。 std::auto_ptr:已过时,不要使用。 std::unique...
当存在至少一个weak_ptr时,shared_ptr的控制块将保持活动状态。如果使用make_shared创建共享指针,则意味着整个对象的内存都被保留。(对象本身会被正确析构,但由于控制块和对象的内存是一起分配的,就像make_shared一样,它们只能一起释放。) 我的理解正确吗? 这...
std::shared_ptr<int> g_s = std::make_shared<int>(1); void f1() { std::shared_ptr<int>l_s1 = g_s; // read g_s } void f2() { ...
我有一个成员函数(方法),它使用std::enable_shared_from_this::weak_from_this() 简而言之: weak_from_this 返回到这个的 weak_ptr。 一个注意点是它不能从构造函数中使用。 如果有人从继承类的构造函数中使用我的函数,其中内部的...
有没有一种方法可以将 std::bind 绑定到 std::weak_ptr?我想存储一个“弱函数”回调,当被调用者被销毁时自动“断开连接”。 我知道如何使用 shared_ptr 创建 std::function:std::function<void()> MyClass::G...
在C++0x中,std::shared_ptr有一个std::static_pointer_cast方法,但是std::weak_ptr没有类似的方法。这是有意为之,还是一个疏忽呢?如果是疏忽,我该如何定义一个合适的函数呢?