提问人:query 提问时间:12/4/2022 最后编辑:query 更新时间:12/4/2022 访问量:23
如何使用传递给 lambda 的“this”指针作为 lambda 中的函数参数?
How to use 'this' pointer passed to a lambda as a function argument within a lambda?
问:
我正在使用 VS 2019 (C++20)。
我无法编译使用 std::visit 和 std::variant 和函数重载的代码。编译器报告错误“Function Visit does not take one argument”。显然,问题出在“这个”论点上,但我无法弄清楚哪里出了问题。
class MyObj
{
public:
void Visit(MyClass& arg) {};
};
void MyClass::Accept(std::variant<MyObj> arg)
{
std::visit(
overload{
[=, this](MyObj& target) {target.Visit(*this);}
}, arg);
}
我错过了什么?
答:
0赞
query
12/4/2022
#1
问题出在包含的头文件上。虽然 VS IDE 很好,但编译器需要 MyClass 的“extern”声明。
评论