为什么 lambda 中的变量无法调用函数

Sum*_*mit 0 c++ c++11 c++14

这是班级。

#include <iostream>
#include <string>

std::string strName = "ABC";

class BlueOut
{
public:
    void printName() { std::cout << strName << std::endl; }

};
Run Code Online (Sandbox Code Playgroud)

现在我创建了这个类的一个对象

 BlueOut blueout;
Run Code Online (Sandbox Code Playgroud)

我在 lambda 中调用对象的函数 printName()

auto a = [&]() { blueout.printName(); };
Run Code Online (Sandbox Code Playgroud)

但是该函数没有被执行。

lub*_*bgr 5

在这一行中,

auto a = [&]() { blueout.printName(); };
Run Code Online (Sandbox Code Playgroud)

该部分[&]() { blueout.printName(); }称为 lambda 表达式。您将其绑定到某个变量a。现在您有一个a由 lambda 表达式创建的函数对象。为了看到效果,必须调用它:

a();
Run Code Online (Sandbox Code Playgroud)