Partager via


Erreur du compilateur C3498

'var' : vous ne pouvez pas capturer une variable qui a un type Managé ou WinRT

Vous ne pouvez pas capturer une variable dotée d'un type managé ou d'un type Windows Runtime dans une expression lambda.

Pour corriger cette erreur

  • Transmettez la variable managée ou de Windows Runtime dans la liste des paramètres de l'expression lambda.

Exemples

L’exemple suivant génère l’erreur C3498, car une variable dotée d’un type managé figure dans la liste de capture d’une expression lambda :

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

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

L’exemple suivant résout l’erreur C3498 en transmettant la variable managée s à la liste des paramètres de l’expression 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!");
}

Voir aussi

Expressions lambda