lambda在c ++中的行为

时间:2016-06-20 14:46:39

标签: c++ visual-studio-2010 lambda

我有一个带枚举器的课程:

class MyClass
{
public:
    enum enTest
    {
        TestA,
        TestB,
        TestC
    };

    void foo(); 
}

并在我的foo函数中:

void MyClass::foo()
{
    MyClass::enTest var = MyClass::TestA;

    auto lambda = [&] () -> void
    {
        if (var == MyClass::TestA)
            int x = 3;
    };
}

它给了我错误: 错误C2227:' - > TestA'的左侧必须指向类/ struct / union / generic类型

在'if'行中,但如果我将lambda的捕获更改为[& var]则可行。

为什么?

我认为[&]通过引用捕获任何引用的变量。

对不起,如果这是一个愚蠢的问题。

0 个答案:

没有答案