编译器错误 C2452

“type”:safe_cast 的无效源类型

safe_cast 的源类型无效。 例如,safe_cast 操作中的所有类型都必须是 CLR 类型。

以下示例生成 C2452:

// C2452.cpp
// compile with: /clr

struct A {};
struct B : public A {};

ref struct C {};
ref struct D : public C{};

int main() {
   A a;
   safe_cast<B*>(&a);   // C2452

   // OK
   C ^ c = gcnew C;
   safe_cast<D^>(c);
}