0

采用以下可以正常工作的简单模板函数:

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 循环中的 + 运算符中使用。您能否告诉我以下这些泛型类型的初始化类型之间有什么区别?

  • 类型 var = Type();
  • 类型 var();

int var()考虑到例如两者和int var = int()是相同的,我认为可以替换这些行!

4

1 回答 1

1

Type var();声明一个函数。Type var = Type()是你想要的。

http://en.wikipedia.org/wiki/Most_vexing_parse

在 C++11 中,您可以使用Type var{};.

于 2014-03-26T10:58:40.607 回答