几周前,我的一位同事花了大约两个小时的时间来了解为什么这段C++/CLI代码不能用Visual Studio 2008进行编译(我刚刚用Visual Studio 2010进行了测试......同样的故事)。C++/CLI的值类约束不会被编译。为什么?
编译器说:错误
1错误C3214: 'T':无效类型 论据泛型参数 通用的 'T' '系统::可空',不符合 约束 '系统:值类型 ^' C:\用户\西蒙\桌面\ Projektdokumentation \ GridLayoutPanel \泛型\ Generics.cpp 111个泛型
添加ValueType
将使代码编译。
public ref class Test
{
generic<class T> where T : value class, ValueType
void MyMethod(Nullable<T> nullable)
{
}
};
我的问题是现在。为什么? value class
和ValueType
之间的区别是什么?
P.S:见可空定义C++:http://msdn.microsoft.com/de-de/library/b3h38hb0.aspx
我同意,值类约束应该已经足够了。我认为你的解决方法是正确的。你可以尝试connect.microsoft.com看看他们会说些什么。 – 2010-05-16 17:02:43