共用方式為


編譯器警告 (層級 1) C4382

擲回 ' type ' :具有__clrcall解構函式或複製建構函式的類型只能在 /clr:pure 模組中攔截

備註

Visual Studio 2015 中已淘汰 /clr:pure 編譯器選項,Visual Studio 2017 不支援。

使用 /clr 編譯時(不是 /clr :pure ),例外狀況處理會預期原生類型中的成員函式__cdecl ,而不是 __clrcall 。 使用呼叫慣例搭配成員函式的原生型別無法在以 __clrcall /clr 編譯的模組中攔截。

如果在以 /clr:pure 編譯的模組中攔截到例外狀況,您可以忽略此警告。

如需詳細資訊,請參閱 /clr (Common Language Runtime 編譯)

範例

下列範例會產生 C4382。

// C4382.cpp
// compile with: /clr /W1 /c
struct S {
   __clrcall ~S() {}
};

struct T {
   ~T() {}
};

int main() {
   S s;
   throw s;   // C4382

   S * ps = &s;
   throw ps;   // OK

   T t;
   throw t;   // OK
}