次の方法で共有


コンパイラ エラー 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
}