Kompilatorfel C3498

var: du kan inte fånga en variabel som har en hanterad eller WinRT-typ

Anmärkningar

Du kan inte fånga en variabel som har en hanterad typ eller en Windows Runtime-typ i en lambda.

Så här åtgärdar du det här felet

  • Skicka variabeln managed eller Windows Runtime till parameterlistan för lambda-uttrycket.

Example

I följande exempel genereras C3498 eftersom en variabel som har en hanterad typ visas i insamlingslistan för ett lambda-uttryck:

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

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

Följande exempel löser C3498 genom att skicka den hanterade variabeln s till parameterlistan för lambda-uttrycket:

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

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

Se även

Lambda-uttryck