编译器错误 C2743

“type”:无法使用 __clrcall 析构函数或复制构造函数捕捉本机类型

使用 /clr 编译的模块尝试捕获本机类型的异常,以及该类型的析构函数或复制构造函数使用 __clrcall 调用约定的情况

使用 /clr 编译时,异常处理需要本机类型中的成员函数 __cdecl,而不是 __clrcall。 在使用 /clr 编译的模块中,无法捕获具有使用 __clrcall 调用约定的成员函数的本机类型

有关详细信息,请参阅 /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
}