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
}