不能使用 cast_operator 从“type1”转换为“type2”
强制转换运算符试图在不兼容的类型之间进行转换。 例如,不能使用 dynamic_cast 运算符将指针转换为引用。 dynamic_cast
运算符不能用于强制转换限定符。 类型上的所有限定符必须匹配。
可以使用 const_cast
运算符删除 const
、volatile
或 __unaligned
等属性。
下面的示例生成 C2682:
// C2682.cpp
class A { virtual void f(); };
class B: public A {};
void g(A* pa) {
B& rb = dynamic_cast<B&>(pa); // C2682
}
下面的示例生成 C2682:
// C2682b.cpp
// compile with: /clr
ref struct R{};
ref struct RR : public R{};
ref struct H {
RR^ r ;
short s;
int i;
};
int main() {
H^ h = gcnew H();
interior_ptr<int>lr = &(h->i);
interior_ptr<short>ssr = safe_cast<interior_ptr<short> >(lr); // C2682
interior_ptr<short>ssr = reinterpret_cast<interior_ptr<short> >(lr); // OK
}