我读过这可能是智能感知的问题,但我真的不知道是不是真的。 当我编译代码时,我得到一个错误(标题),不知道如何解决它。我的书(Stephen Prata的“Sams C ++ Primer Plus”)没有回答我的问题。我写了一个非常类似的程序,问题没有出现。
问题可能在于类型说明符?它和模板一样吗?真的很抱歉我的语言......
#include <iostream>
template <typename T>
T maxn(T tab[], int size);
template <> float maxn<float>(float, int); // Problem appears here...
int main()
{
std::cin.get();
return 0;
}
template <typename T>
T maxn(T tab[], int size)
{
T max = tab[0];
for (int i = 1; i < size; i++)
{
if (tab[i] > max) max = tab[i];
}
}
我感谢任何建议。谢谢!
答案 0 :(得分:2)
专业化的第一个参数是不正确的。你给float
但是根据模板,它应该是一个浮点数组。
template <> float maxn<float>(float[], int);
// ^
// You need to indicate that the first parameter is an array.
请注意,您没有为专门化声明主体,因此如果您尝试使用它,链接将失败。 (除非您在另一个编译单元中提供实现。)