无法使用带有泛型的dynamic_cast

时间:2014-04-06 13:33:49

标签: generics c++-cli dynamic-cast

我有一个泛型类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_castBase转换为其派生类之一时,为什么会出现编译错误?我希望转换编译但在运行时失败(通过返回nullptr)以防参数类型不正确。

1 个答案:

答案 0 :(得分:3)

尝试dynamic_cast <T^>

指针必须转换为其他指针,其他句柄的句柄等等。

相关问题