コンパイラ エラー C2743
'type': __clrcall デストラクターまたはコピー コンストラクターでネイティブ型をキャッチできません
/clr でコンパイルされたモジュールが、ネイティブ型の例外をキャッチしようとしましたが、その型のデストラクターまたはコピー コンストラクターでは __clrcall
呼び出し規則が使用されています。
/clr でコンパイルされている場合、例外処理では、ネイティブ型のメンバー関数が __clrcall ではなく __cdecl であることが想定されます。 __clrcall
呼び出し規約が使用されているメンバー関数を持つネイティブ型は、/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
}