Partilhar via


Erro do compilador C3498

'var': não é possível capturar uma variável que tenha um tipo gerenciado ou tipo WinRT

Observações

Não é possível capturar uma variável que tenha um tipo gerenciado ou um tipo do Tempo de Execução do Windows em um lambda.

Para corrigir este erro

  • Passe a variável gerenciada ou do Tempo de Execução do Windows para a lista de parâmetros da expressão lambda.

Example

O exemplo a seguir gera C3498 porque uma variável que tem um tipo gerenciado aparece na lista de captura de uma expressão lambda:

// C3498a.cpp
// compile with: /clr
using namespace System;

int main()
{
   String ^ s = "Hello";
   [&s](String ^ r)
      { return String::Concat(s, r); } (", World!"); // C3498
}

O exemplo a seguir resolve C3498 passando a variável s gerenciada para a lista de parâmetros da expressão lambda:

// C3498b.cpp
// compile with: /clr
using namespace System;

int main()
{
   String ^ s = "Hello";
   [](String ^ s, String ^ r)
      { return String::Concat(s, r); } (s, ", World!");
}

Consulte também

Expressões do Lambda