我有这个功能
array<ItemType>^ GetNextItems(int n) {
auto ret = gcnew Collections::Generic::List < ItemType > ;
for (int i = 0; i < n; i++) {
auto item = GetNextItem();
if (item == ItemType()) break;
ret->Add(item);
}
return ret->ToArray();
}
但是编译给了我一个错误:无法从'cli :: array&lt;转换ItemType,1&gt; ^'到'cli :: array&lt; ItemType,1&gt; ^'
ItemType是模板参数ie。
generic <typename ItemType>
我一直盯着这个,我无法发现故障。为什么不编译?
答案 0 :(得分:1)
如果ItemType
是.NET / CLR类型,那么您将需要返回类型声明中的^ -hat。 ^
仍然不包含在实际的类型声明中。
所以它会是这样的:
generic <typename ItemType>
ref class Test
{
array<ItemType ^>^
GetNextItems(int n)
{
List<ItemType ^> ^ ret = gcnew List<ItemType ^>(n);
...
return ret->ToArray();
}
};
请注意<ItemType ^>
返回类型声明中添加的插入符号,但不在类“generic
定义中。”