相关疑难解决方法(0)

对Windows HANDLE使用std :: unique_ptr

我试图使用std :: unique_ptrs以异常安全的方式管理Windows HANDLE.

首先我试过:

struct HandleDeleter
{
    void operator()( HANDLE handle )
    {
        if( handle )
        {
            FindVolumeClose( handle )
        }
    }
}
typedef std::unique_ptr< HANDLE, HandleDeleter > unique_vol_handle_t;
Run Code Online (Sandbox Code Playgroud)

稍后在我的代码中尝试使用它时:

unique_vol_handle_t volH( FindFirstVolumeW( buffer, MAX_GUID_PATH ) );

我从Visual Studio 2012RC收到以下错误:

1>          error C2664: 'std::unique_ptr<_Ty,_Dx>::unique_ptr(std::nullptr_t) throw()' : cannot convert parameter 1 from 'HANDLE' to 'std::nullptr_t'
1>          with
1>          [
1>              _Ty=HANDLE,
1>              _Dx=VolumeHandleDeleter
1>          ]
1>          nullptr can only be converted to pointer or handle types
Run Code Online (Sandbox Code Playgroud)

引用上面的volH声明行.

搜索了一段时间后,我发现了一篇博文,基本上说,添加: …

c++ unique-ptr visual-c++ c++11 visual-studio-2012

18
推荐指数
4
解决办法
7497
查看次数

标签 统计

c++ ×1

c++11 ×1

unique-ptr ×1

visual-c++ ×1

visual-studio-2012 ×1