VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 647|回复: 1

[已解决]模板参数不明确的问题

[复制链接]
41_avatar_middle
最佳答案
0 
在线会员 发表于 2020-5-9 15:51:00 | 显示全部楼层 |阅读模式
6驿站币
  1. #include <iostream>
  2. using namespace std;
  3. template<typename T>
  4. void sort(T a[], int num)
  5. {
  6.         int i, j, temp;
  7.         int flag = 1;
  8.         for (i = 0; i < num - 1 && flag == 1; i++)
  9.         {
  10.                 flag = 0;
  11.                 for (j = 0; j < num - i - 1; j++)
  12.                 {
  13.                         if (a[j + 1] < a[j])
  14.                         {
  15.                                 temp = a[j + 1];
  16.                                 a[j + 1] = a[j];
  17.                                 a[j] = temp;
  18.                                 flag = 1;
  19.                         }
  20.                 }
  21.         }
  22. }
  23. template<typename A>
  24. int sum1(A* a,int num)
  25. {
  26.         int Sum = 0;
  27.         int* a = new int[num];
  28.         for(int i=0;i<num;i++)
  29.         {
  30.                 Sum += a[i];
  31.         }
  32.         return Sum;
  33. }
  34. template<typename B>
  35. float sum2(B* a,int num)
  36. {
  37.         int Sum = 0;
  38.         float* a = new float[num];
  39.         for(int i=0;i<num;i++)
  40.         {
  41.                 Sum += a[i];
  42.         }
  43.         return Sum;
  44. }
  45. template<class C>
  46. bool larger(C* a,C* b,int num)
  47. {
  48.         int* a_int = new  int[num];
  49.     float* b = new  float[num];
  50.         sum1(*a,num);
  51.         sum2(*b,num);
  52.         if(sum1>sum2)
  53.                 return true;
  54.         else
  55.                 return false;
  56. }
  57. int  main(){
  58.         int  count;
  59.         cin>>count;
  60.         int*  data_int  =  new  int[count];
  61.         float*  data_float  =  new  float[count];
  62.         for(int  i=0;i<count;i++)
  63.                 cin>>data_int[i];
  64.         for(int  i=0;i<count;i++)
  65.                 cin>>data_float[i];
  66.         sort(data_int,  count);
  67.         for(int  i=0;i<count;i++)
  68.                 cout<<data_int[i]<<"  ";
  69.         cout<<endl;
  70.         sort(data_float,  count);
  71.         for(int  i=0;i<count;i++)
  72.                 cout<<data_float[i]<<"  ";
  73.         cout<<endl;
  74.         cout<<larger(data_int,  data_float,  count);
  75.         return  0;
  76. }
复制代码

代码中主函数larger出报错没有与参数列表匹配的函数模板larger实例,这到底是为什么呢?
最佳答案
57_avatar_small
2020-5-9 15:51:01
template<class C>
bool larger(C* a,C* b,int num)
此处a和b是同类型。
larger(data_int,  data_float,  count);
调用处:分别为int*和float*类型。
所以找不到。
可以修改为
template<class C,class D>
bool larger(C* a,D* b,int num)

最佳答案

查看完整内容

template bool larger(C* a,C* b,int num) 此处a和b是同类型。 larger(data_int, data_float, count); 调用处:分别为int*和float*类型。 所以找不到。 可以修改为 template bool larger(C* a,D* b,int num)




上一篇:学习顺序到底怎么来的啊?
下一篇:请问 c++ 中的vector 容器
57_avatar_middle
最佳答案
25 
在线会员 发表于 2020-5-9 15:51:01 | 显示全部楼层    本楼为最佳答案   
bestAnswer
template<class C>
bool larger(C* a,C* b,int num)
此处a和b是同类型。
larger(data_int,  data_float,  count);
调用处:分别为int*和float*类型。
所以找不到。
可以修改为
template<class C,class D>
bool larger(C* a,D* b,int num)
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-3-23 14:29

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表