Compartilhar via


Erro do compilador C2743

'type': não é possível usar catch em um tipo nativo com construtor de cópia ou destruidor __clrcall

Um módulo compilado com /clr tentou capturar uma exceção de tipo nativo em que o destruidor do tipo ou construtor de cópia usa a convenção de chamada __clrcall.

Quando compilado com /clr, o tratamento de exceção espera que as funções membro em um tipo nativo sejam __cdecl, e não __clrcall. Tipos nativos com funções membro usando a convenção de chamada __clrcall não podem ser capturados em um módulo compilado com /clr.

Para obter mais informações, consulte /clr (compilação de Common Language Runtime).

Exemplo

O exemplo a seguir gera o erro 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
}