Udostępnij przez


Błąd kompilatora C2743

"type" : nie może przechwycić typu natywnego z __clrcall destruktorem lub konstruktorem kopii

Uwagi

Moduł skompilowany za pomocą polecenia /clr próbował przechwycić wyjątek typu natywnego i gdzie destruktor typu lub konstruktor kopiowania używa __clrcall konwencji wywoływania.

Podczas kompilowania z /clr obsługa wyjątków oczekuje, że funkcje składowe w typie natywnym będą __cdecl , a nie __clrcall. Typy natywne z funkcjami składowymi przy użyciu konwencji wywoływania nie mogą być przechwytywane w module skompilowanym za pomocą __clrcall/clr.

Aby uzyskać więcej informacji, zobacz /clr (kompilacja środowiska uruchomieniowego języka wspólnego).

Przykład

Poniższy przykład generuje kod C2743.

// 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
}