如何使用“where”关键字在CLI / C ++中向泛型类添加约束?我一直在寻找 - 但即使msdn只有C#文档!
所以问题的第一部分是:在定义泛型类时,在哪里放置“where”以及可以在其旁边写什么?
generic <class T> ref class Stack
{
//........
}
问题的第二部分是:where T:IComparable
在下面的函数定义中意味着什么?
generic <typename T> where T:IComparable
T Function(array <T>^ x)
{
T max(x[0]);
for(int i = 1; i < x->Length; i++)
if(max-> CompareTo(x[i]) < 0)
max = x[i];
return max;
}
答案 0 :(得分:4)
“通用,其中T:IComparable”表示T只能是IComparable的派生。 因此,当泛型类的用户尝试使用T不是IComparable的类型时,编译器会抱怨。
至于问题的第一部分,我不得不承认我是无知的。也许像Re-Sharper或CodeRush这样的工具可以提供帮助。
答案 1 :(得分:3)
where
介于generic <class T>
和ref class Stack
之间。where type-parameter: constraint list
约束列表是以逗号分隔的约束规范列表。该列表可以包括由类型参数实现的接口。