Compilerfehler C2743

'Typ': catch von systemeigenem Typ mit __clrcall-Destruktor oder copy-Konstruktor nicht möglich

Ein mit /clr (nicht mit /clr:pure) kompiliertes Modul hat versucht, eine Ausnahme systemeigenen Typs aufzufangen, wobei der Destruktor bzw. copy-Konstruktor des Typs die __clrcall-Aufrufkonvention verwendet.

Von einer mit /clr (nicht /clr:pure) kompilierten Ausnahmebehandlung wird erwartet, dass es sich bei den Memberfunktionen in einem systemeigenen Typ um __cdecl und nicht um __clrcall handelt.Systemeigene Typen mit Memberfunktionen, die die __clrcall-Aufrufkonvention verwenden, können nicht in einem mit /clr kompilierten Modul abgefangen werden.

Weitere Informationen finden Sie unter /clr (Common Language Runtime-Kompilierung).

Beispiel

Im folgenden Beispiel wird C2743 generiert.

// C2743.cpp
// compile with: /clr
public struct S {
   __clrcall ~S() {}
};

public struct T {
   ~T() {}
};

int main() {
   try {}
   catch(S) {}   // C2743
   // try the following line instead
   // catch(T) {}

   try {}
   catch(S*) {}   // OK
}