Поделиться через


Ошибка компилятора C3490

"переменная" не может быть изменен, поскольку доступ к нему осуществляется через константный объект

Лямбда-выражение, объявленное в методе const , не может изменять данные недоступного для изменения члена.

Исправление ошибки

  • Удалите модификатор const из объявления метода.

Примеры

Приведенный ниже пример вызывает ошибку C3490, так как переменная-член _i изменяется в методе const .

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

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

   int _i;
};

В приведенном ниже примере ошибка C3490 устраняется путем удаления модификатора const из объявления метода.

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

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

   int _i;
};

См. также

Лямбда-выражения