gpt4 book ai didi

c++ - std::unique 指针和自定义 lambda 删除器错误

转载 作者:太空狗 更新时间:2023-10-29 20:42:39 30 4
gpt4 key购买 nike

我正在尝试使用 std::unique_pointer 并为其提供自定义 lambda 删除器,但出现语法错误:

cannot convert from 'wmain::<lambda_0f8f736f48c52ca6fa24492e7c0c1ec0>' to 'const std::default_delete<_Ty>'

使用以下简单、最少的代码:

#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;
}

这是向智能指针提供 lambda 删除器的错误方法吗?

最佳答案

删除器必须是 unique_ptr 类型的一部分。

typedef std::unique_ptr<TestClass, void(*)(TestClass *)> TestClassPtr;

进行此更改后,您的代码应该可以正常工作。此外,我假设您要做的不是简单地在删除器中的指针上调用 delete。如果没有,则无需提供自定义删除器。

关于c++ - std::unique 指针和自定义 lambda 删除器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931227/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com