c++ 模板具体化问题
int main(){
using namespace std;
char str = {
"1234567",
"12345",
"123456",
};
int a = {6,5,4,9,2};
double b = {9.3,15.2,3,4,6};
cout << max(a,5) <<'\n'<< max(b,5);
cout << max(str,3);
return 0;
}
template<typename T>
T max(T s[],int n)
{
int i = 1;
T num;
num = s;
for(;i <= n-1;i++)
{
if(s > num)
{
num = s;
}
}
return num;
}
template<> char * max(char s[],int n)
{
int i = 1,num = 0;
for(;i <= n;i++)
{
if(strlen(s) > strlen(s))
{
num = i;
}
}
return s;
}
不能通过
不知道这样该能不能满足你的要求:
template<typename T>
T *max(T s[],int n)
{
int i = 1,num = 0;
for(;i <= n;i++)
{
if(strlen(s) > strlen(s))
{
num = i;
}
}
return s;
} sidfate 发表于 2014-5-10 16:10 static/image/common/back.gif
不知道这样该能不能满足你的要求:
我只想知道我是怎么错的
aces 发表于 2014-5-10 16:58 static/image/common/back.gif
我只想知道我是怎么错的
template<> char * max(char s[],int n)
{
int i = 1,num = 0;
for(;i <= n;i++)
{
if(strlen(s) > strlen(s))
{
num = i;
}
}
return s;
}这个函数本来是一个模板函数但是没有实现模板的功能(具体有类型)所以没有意义,还有你在调用函数前没有声明,把两个模板函数放在 main 之前就没错了 sidfate 发表于 2014-5-10 17:33 static/image/common/back.gif
这个函数本来是一个模板函数但是没有实现模板的功能(具体有类型)所以没有意义,还有你在调用函数前没有 ...
好吧我代码复制的时候少了点
前面已经声明了函数和头文件
我用的vs2010
可是还是通不过 aces 发表于 2014-5-11 19:30 static/image/common/back.gif
好吧我代码复制的时候少了点
前面已经声明了函数和头文件
我用的vs2010
来个完整代码,还有代码的作用 知道什么是具体化吗?
template<typename T>
T max(T s[],int n)
把上面的T换成char*后
应该为
template<>
char* max( char* s[], int n );
而不是
template<> char * max(char s[],int n); 仰望天上的光 发表于 2014-5-12 12:12 static/image/common/back.gif
知道什么是具体化吗?
template
T max(T s[],int n)
了解了 tk
页:
[1]