.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>();
}
当我编译此代码时,我收到以下错误。
错误C3392:&#39; VAL_T&#39;:泛型的无效类型参数 参数&#39; T&#39;通用&#39; System :: Nullable&#39;,必须有公共 无参数构造函数
我在Visual Studio 2010(vc10)和2012(vc110)中没有出现任何错误。
我不知道在哪里添加构造函数。有人可以请帮助。 提前谢谢。
更新:
我发现当前的.Net框架中已经更改了Nullable对象接口。 当前版本:
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()。我仍然得到同样的错误。
答案 0 :(得分:0)
问题是由于.NET Framework 4.5中Nullable的泛型类型名称更改。
我将通用类型设为value struct, gcnew()
我在header和cpp文件中添加了where VAL_T : value class,System::ValueType, gcnew()
。这解决了这个问题。