我有一个泛型类Client
,它有一个类型参数。 type参数是从Base
派生的任何引用类型。所以我将课程声明如下:
generic <class T>
where T : Base, gcnew()
public ref class Client {
T val;
void SetVal(Base ^bval){
val = dynamic_cast<T>(bval); // error C2682: cannot use 'dynamic_cast' to convert from 'Base ^' to 'T'
}
};
使用dynamic_cast
从Base
转换为其派生类之一时,为什么会出现编译错误?我希望转换编译但在运行时失败(通过返回nullptr
)以防参数类型不正确。
答案 0 :(得分:3)
尝试dynamic_cast <T^>
。
指针必须转换为其他指针,其他句柄的句柄等等。