Kai*_*aan 3 c++ lambda smart-pointers unique-ptr visual-studio-2012
我试图使用std :: unique_pointer并提供自定义lambda删除器,但我收到语法错误:
cannot convert from 'wmain::<lambda_0f8f736f48c52ca6fa24492e7c0c1ec0>' to 'const std::default_delete<_Ty>'
Run Code Online (Sandbox Code Playgroud)
使用以下简单的最小代码:
#include <memory>
class TestClass
{
};
typedef std::unique_ptr<TestClass> TestClassPtr;
int _tmain(int argc, _TCHAR* argv[])
{
TestClassPtr testPtr(new TestClass(), [](TestClass* w){ delete w;});
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是向智能指针提供lambda删除器的错误方法吗?
删除者必须是该unique_ptr类型的一部分.
typedef std::unique_ptr<TestClass, void(*)(TestClass *)> TestClassPtr;
Run Code Online (Sandbox Code Playgroud)
进行此更改后,您的代码应该可以正常工作.另外,我假设你要做的事情不仅仅是delete在删除器中调用指针.如果没有,则无需提供自定义删除器.
| 归档时间: |
|
| 查看次数: |
2926 次 |
| 最近记录: |