编译器错误 C3490

无法修改 var,因为正在通过 const 对象对其进行访问

const 方法中声明的 lambda 表达式不能修改不可变成员数据。

更正此错误

  • 从方法声明删除 const 修饰符。

示例

下面的示例生成 C3490,因为它修改 _i 方法中的成员变量 const

// C3490a.cpp
// compile with: /c

class C
{
   void f() const
   {
      auto x = [=]() { _i = 20; }; // C3490
   }

   int _i;
};

下面的示例通过从方法声明删除 const 修饰符解决了错误 C3490:

// C3490b.cpp
// compile with: /c

class C
{
   void f()
   {
      auto x = [=]() { _i = 20; };
   }

   int _i;
};

另请参阅

Lambda 表达式