小编XU *_*ang的帖子

使用std :: enable_shared_from_this时析构函数崩溃

我正在尝试像类一样编写一个boost-signal(作为学习c ++的实践).我发现当我使用时enable_shared_from_this,我总是在析构函数中崩溃.这是代码(我正在使用vs2012更新2):

对此有何评论?应该引起这个问题shared_from_this(),因为当我取消注释line(auto this_ = shared_from_this();)时signal_connection::disconnect,一切正常.

我知道在调用之前必须至少有一个有效的shared_ptr shared_from_this().我的代码应该满足这一点.

代码:

    #include <memory>
    #include <map>

    class slot_manager;

    class signal_connection: public std::enable_shared_from_this<signal_connection>
    {
    public:
        signal_connection(slot_manager* manager)
            :manager_(manager)
        {}
    public:
        void disconnect() ;
    private:
        slot_manager* manager_;
    };

    class slot_manager
    {
    public:
        typedef std::shared_ptr<signal_connection> connection_type;
        typedef std::map<connection_type, int> map_type;
        typedef map_type::value_type map_value_type;
    public:
        void connect(int slot)
        {
            std::shared_ptr<signal_connection> c(new signal_connection(this));
            slots_.insert(map_value_type(c, slot));
        }
        ~slot_manager()
        {
            auto iter = slots_.begin();
            map_type::iterator iter2 = slots_.end();
            while (iter …
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr c++11

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

标签 统计

c++ ×1

c++11 ×1

shared-ptr ×1