199 - 问,shared_ptr处理windows句柄HANDLE

199 - 问,shared_ptr处理windows句柄HANDLE

利用shared_ptr构造时的第二个参数deleter,可以。

  struct auto_closer_find

    {

        void operator()(HANDLE & find)

        {

            if(INVALID_HANDLE_VALUE != find)

            {

                FindClose(find);

                find = INVALID_HANDLE_VALUE;

            }

        }

    };

        WIN32_FIND_DATAA ffd;

        boost::shared_ptr<void> find_ptr( FindFirstFileA((explore_dir->disk_path() + "\\*").c_str(),& ffd),auto_closer_find());

        if(INVALID_HANDLE_VALUE == find_ptr.get())

            return false;

你可能感兴趣的:(199 - 问,shared_ptr处理windows句柄HANDLE)