C++ lambda - 捕获静态成员变量

C++ lambda - capture static member variable

本文关键字:静态成员 变量 lambda C++      更新时间:2023-10-16

我在静态类方法中有一个lambda函数,如下所示:

void
MyClass::foo() {
auto my_lambda = [](int arg) {
// do stuff
}
}

其中fooMyClass的静态方法。现在,在my_lambda内部,我想引用另一个静态方法barMyClass。我该怎么做?我已经看到了这个问题,但似乎这仅适用于非静态方法,因为静态方法无法引用this

这是我对它的天真看法 - 但我可能误解了这个问题。

#include <iostream>
class MyClass {
private:
static int variable;                                // just some common data
public:
static void another(int dest) {                     // receiver
std::cout << "I'm alive: " << dest << "n"; 
}
static void foo();
};
int MyClass::variable = 4;                              // 
void MyClass::foo() {
auto my_lambda = [](int arg) {
another(arg + variable);                        // reference another static method
};
my_lambda(123);
}
int main() {
MyClass apa;
apa.foo();
}
I'm alive: 127