| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:这程序哪里错了?
只看楼主 加入收藏
askCpp
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-23
收藏
 问题点数:0 回复次数:6 
这程序哪里错了?

编译出现错误:error C2912: explicit specialization; 'void __cdecl returnAddress(char *[],int)' is not a function template,我就是检查不出returnAddress这个函数哪里错了?


#include <iostream>
#include <cstring>
using namespace std;
template <typename any>
any maxn(any arr[],int n);

template <> void returnAddress(char* arr[],int n);

int main()
{
int intarr[6]={21,35,74,665,92};
double doublearr[4]={213.24,364.76,314,57};
int x=maxn(intarr,6);
int y=maxn(doublearr,4);
char* strarr[5]=
{
{"yi chun xue yuan"},
{"bushiw o a"},
{"zm gao de"},
{"shenme wanyi"},
{"Game Programming all in one"}
};
returnAddress(strarr,5);
return 0;
}

template <typename any>
any maxn(any arr[],int n)
{
any maxNum;
maxNum=arr[0];
for(int i=1;i<n;i++)
{
if(arr[i]>maxNum)
maxNum=arr[i];
}
return maxNum;
}

template <> void returnAddress(char* arr[],int n)
{
int len=strlen(arr[0]);
int i;
for(i=1;i<n;i++)
{
if(strlen(arr[i])>len)
len=strlen(arr[i]);
}
cout<<arr[i]<<","<<&arr[i]<<endl;
}

搜索更多相关主题的帖子: int void char 
2007-09-30 15:25
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 

#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;
template <class any> any maxn(any arr[],int n);

template <class T> void returnAddress(T (*arr)[50],int n);

int main()
{
int intarr[6]={21,35,74,665,92};
double doublearr[4]={213.24,364.76,314,57};
int x=maxn(intarr,6);
double y=maxn(doublearr,4);
char strarr[5][50]=
{"yi chun xue yuan","bushiw o a","zm gao de","shenme wanyi","Game Programming all in one"};
returnAddress(strarr,5);
getch();
return 0;
}

template <class any> any maxn(any arr[],int n)
{
any maxNum;
maxNum=arr[0];
for(int i=1;i<n;i++)
{
if(arr[i]>maxNum)
maxNum=arr[i];
}
return maxNum;
}

template <class T> void returnAddress(T (*arr)[50],int n)
{
int len=strlen(arr[0]);
int i;
for(i=1;i<n;i++)
{
if(strlen(arr[i])>len)
len=strlen(arr[i]);
}
cout<<arr[i]<<","<<&arr[i]<<endl;
}


语法没错误了,但不知道是不是你要的,你自己看下吧。。。


偶学编程,也许本身就是一个错。。。
2007-09-30 16:12
askCpp
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-23
收藏
得分:0 

你好,能否详细解释下T (*arr)[50]T *arr[50]有什么区别?
我看书看了好久也看不懂

2007-09-30 17:36
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 
(*arr)[50] 是数组指针。。。
*arr[50] 是指针数组。。。

偶学编程,也许本身就是一个错。。。
2007-09-30 17:39
askCpp
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-23
收藏
得分:0 
老兄,详细点嘛
2007-09-30 17:44
askCpp
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-23
收藏
得分:0 
可不可以这样理解?
int (*arr)[50]是一个指向数组的int类型指针,现在我想问数组中每个元素是什么类型?
而int *arr[50]是它首先是个数组,并且数组中每个元素都是一个int类型的指针,对不对?
2007-09-30 17:55
coachard
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:1251
专家分:0
注 册:2007-8-12
收藏
得分:0 

第二个问题没错。。。

第一个,arr指向的是一个含有50个元素的int数组。。。


偶学编程,也许本身就是一个错。。。
2007-09-30 18:56
快速回复:这程序哪里错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020460 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved