Поделиться через


Ошибка компилятора C2743

"type" : не удается поймать собственный тип с помощью деструктора __clrcall или конструктора копирования

Модуль, скомпилированный с / clr , попытался поймать исключение собственного типа и где деструктор типа или конструктор копирования использует __clrcall соглашение о вызове.

При компиляции с / clr обработка исключений ожидает, что функции-члены в собственном типе будут __cdecl , а не __clrcall. Собственные типы с функциями-членами с помощью __clrcall соглашения о вызовах не могут быть пойманы в модуле, скомпилированном с помощью /clr.

Дополнительные сведения см. в разделе /clr (компиляция CLR).

Пример

Следующий пример приводит к возникновению ошибки 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
}