Udostępnij za pomocą


Błąd kompilatora C3498

"var": nie można przechwycić zmiennej, która ma zarządzany lub WinRTtype

Uwagi

Nie można przechwycić zmiennej z typem zarządzanym lub typem środowisko wykonawcze systemu Windows w lambda.

Aby poprawić ten błąd

  • Przekaż zmienną zarządzaną lub środowisko wykonawcze systemu Windows do listy parametrów wyrażenia lambda.

Example

Poniższy przykład generuje C3498, ponieważ zmienna o typie zarządzanym jest wyświetlana na liście przechwytywania wyrażenia lambda:

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

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

Poniższy przykład rozwiązuje problem C3498, przekazując zmienną zarządzaną s do listy parametrów wyrażenia 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!");
}

Zobacz też

Wyrażenia lambda