这是编的过的代码:
#include <iostream>
using namespace std;
#include <cstring>
template <typename T>
T maxn(T array[], int n);
template<> char* maxn(char* str[], int n);
int main()
{
int ig[6] = {1,2,3,4,5,0};
double dg[4] = {1.3, 4.8, 2.8, 3.2};
char * cg[5] = {
"alex is cool",
"amy is nice",
"dwdw",
"al",
"ddd"
};
cout << maxn(ig, 6) << endl;
cout << maxn(dg, 4) << endl;
cout << maxn(cg, 5) << endl;
return 0;
}
template <typename T>
T maxn(T array[], int n)
{
T max = array[0];
for(int i = 0; i < n; ++i)
{
max = (max > array[i] ? max : array[i]);
}
return max;
}
template<> char* maxn(char* str[], int n)
{
char * longest = str[0];
for(int i = 0; i < n ; ++i)
{
if(strlen(longest) < strlen(str[i]))
{
longest = str[i];
}
}
return longest;
}
这是编不过的代码:
#include <iostream>
using namespace std;
#include <cstring>
template <typename T>
T maxn(const T array[], int n);
template<> char* maxn(const char* str[], int n);
int main()
{
int ig[6] = {1,2,3,4,5,0};
double dg[4] = {1.3, 4.8, 2.8, 3.2};
char * cg[5] = {
"alex is cool",
"amy is nice",
"dwdw",
"al",
"ddd"
};
cout << maxn(ig, 6) << endl;
cout << maxn(dg, 4) << endl;
cout << maxn(cg, 5) << endl;
return 0;
}
template <typename T>
T maxn(const T array[], int n)
{
T max = array[0];
for(int i = 0; i < n; ++i)
{
max = (max > array[i] ? max : array[i]);
}
return max;
}
template<> char* maxn(const char* str[], int n)
{
char * longest = str[0];
for(int i = 0; i < n ; ++i)
{
if(strlen(longest) < strlen(str[i]))
{
longest = str[i];
}
}
return longest;
}
#include
using namespace std;
// #include
template
T maxn(const T array[], int n);
template<> const char* maxn(const char* const str[], int n);
int main()
{
int ig[6] = {1, 2, 3, 4, 5, 0};
double dg[4] = {1.3, 4.8, 2.8, 3.2};
const char * cg[5] = { //不加const是不会调用特化的模版的
"alex is cool",
"amy is nice",
"dwdw",
"al",
"ddd"
};
cout << maxn(ig, 6) << endl;
cout << maxn(dg, 4) << endl;
cout << maxn(cg, 5) << endl;
return 0;
}
template
T maxn(const T array[], int n)
{
T max = array[0];
for (int i = 0; i < n; ++i)
{
max = (max > array[i] ? max : array[i]);
}
return max;
}
template<> const char* maxn(const char* const str[], int n)
{
const char * longest = str[0];
for (int i = 0; i < n ; ++i)
{
if (strlen(longest) < strlen(str[i]))
{
longest = str[i];
}
}
return longest;
}
我的问题也一样,昨晚回家做了这一个c++ primer plus的编程练习第六题,应该和你的是一样,我也这么加const,可就是编译不过
加了const 模板T就变成了 const int或const doble 。在函数中你使用 Tmax=arr[0];max就是一个const
常量,后续你又修改max的值。这当然编译通不过