有一个代码不起作用,因为(我知道 char*[] 选项是错误的。)如果您省略它,那么代码可以正常工作。
但是什么会更好呢?是否省略括号<>?如果上一个问题的答案是否定的,那么在 <> 中应该写什么?
这是代码。
#include <iostream>
#include <cstring>
template <typename T>
void maxn(T *, unsigned int);
template <> void maxn<char*[]>(char *array[], unsigned int n)
{
char *p = array[0];
for (int i = 1; i < n; ++i)
{
if (strlen(p) < strlen(array[i]))
p = array[i];
}
std::cout << std::endl << "Line: " << p << " & Length: " << strlen(p);
}
int main()
{
int arr_int[] = {3, 8, 0 ,9};
maxn(arr_int, 4);
double arr_double[] = {2.56, 0, 1, 3.567, 41.7, 7.87};
maxn(arr_double, 6);
char *p[] = {
".....................",
".................................",
".............",
"**********************",
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
};
maxn(p, 5);
return 0;
}
template <typename T>
void maxn(T * arr, unsigned int n)
{
T highest = arr[0];
for (int i = 1; i < n; ++i)
{
if (highest < arr[i])
highest = arr[i];
}
std::cout << std::endl << highest;
}

也许是这样?
没错,根据分配,函数应该return,而不是output,但这些已经是细节......