采用以下简单的模板功能,可以正常工作:
template<typename T>
double Average(T tArray[], int nElements)
{
T tSum = T(); // tSum = 0
for (int nIndex = 0; nIndex < nElements; ++nIndex)
{
tSum += tArray[nIndex];
}
return double(tSum) / nElements;
}
我已将第一行更改为T tSum()
并且未编译,因为编译器认为tSum是一个函数,不能在for循环中的+运算符中使用。您能否告诉我以下类型的泛型类型的初始化有什么区别?
我认为可以替换这些行,因为例如int var()
和int var = int()
都是相同的!
答案 0 :(得分:1)
Type var();
声明一个函数。 Type var = Type()
就是你想要的。
请参阅http://en.wikipedia.org/wiki/Most_vexing_parse
在C ++ 11中,您可以使用Type var{};
。