编译器警告(等级 1)C4669

“cast”: 不安全的转换:“class”是托管的或 WinRT 类型对象

转换包含 Windows 运行时或托管类型。 编译器通过执行到一个指针到另一个指针的按位复制完成转换,但不提供其他检查。 若要解决此警告,请不要转换包含托管成员或 Windows 运行时类型的类。

下面的示例生成 C4669,并演示如何修复此错误:

// C4669.cpp
// compile with: /clr /W1
ref struct A {
   int i;
   Object ^ pObj;   // remove the managed member to fix the warning
};

ref struct B {
   int j;
};

int main() {
   A ^ a = gcnew A;
   B ^ b = reinterpret_cast<B ^>(a);   // C4669
}