.h 文件
generic<typename VAL_T> where VAL_T : value class,System::ValueType
Nullable<VAL_T> Get();
.cpp文件
generic<typename VAL_T>
Nullable<VAL_T> FidField::Get()
{
return Nullable<VAL_T>();
}
当我编译此代码时,出现以下错误。
我在Visual Studio 2010(vc10(错误 C3392:"VAL_T":泛型的类型参数无效 泛型"系统::可为空"的参数"T",必须具有公共 无参数构造函数
和2012(vc110(中没有收到任何错误。
我不确定在哪里添加构造函数。有人可以帮忙吗?提前谢谢。
更新:
我看到在当前的 .Net 框架中更改了可为空的对象接口。当前版本:
generic<typename T>
where T : value struct, gcnew()
[SerializableAttribute]
public value struct Nullable
在 VS2010 中:
generic<typename T>
where T : value class
public value class Nullable
所以我添加了 Nullable 类所期望的 gcnew((。我仍然收到同样的错误。
参考链接:在当前的 .Net 框架中可为空
在 .Net 框架 4 中可为空
该问题是由于 .NET Framework 4.5 中 Nullable 的泛型类型名更改造成的。
我使泛型类型具有value struct, gcnew()
我在头文件和 CPP 文件中都添加了where VAL_T : value class,System::ValueType, gcnew()
。这解决了问题。