|
6驿站币
- #include <iostream>
- using namespace std;
- template<typename T>
- void sort(T a[], int num)
- {
- int i, j, temp;
- int flag = 1;
- for (i = 0; i < num - 1 && flag == 1; i++)
- {
- flag = 0;
- for (j = 0; j < num - i - 1; j++)
- {
- if (a[j + 1] < a[j])
- {
- temp = a[j + 1];
- a[j + 1] = a[j];
- a[j] = temp;
- flag = 1;
- }
- }
- }
- }
- template<typename A>
- int sum1(A* a,int num)
- {
- int Sum = 0;
- int* a = new int[num];
- for(int i=0;i<num;i++)
- {
- Sum += a[i];
- }
- return Sum;
- }
- template<typename B>
- float sum2(B* a,int num)
- {
- int Sum = 0;
- float* a = new float[num];
- for(int i=0;i<num;i++)
- {
- Sum += a[i];
- }
- return Sum;
- }
- template<class C>
- bool larger(C* a,C* b,int num)
- {
- int* a_int = new int[num];
- float* b = new float[num];
- sum1(*a,num);
- sum2(*b,num);
- if(sum1>sum2)
- return true;
- else
- return false;
- }
- int main(){
- int count;
- cin>>count;
- int* data_int = new int[count];
- float* data_float = new float[count];
- for(int i=0;i<count;i++)
- cin>>data_int[i];
- for(int i=0;i<count;i++)
- cin>>data_float[i];
- sort(data_int, count);
- for(int i=0;i<count;i++)
- cout<<data_int[i]<<" ";
- cout<<endl;
- sort(data_float, count);
- for(int i=0;i<count;i++)
- cout<<data_float[i]<<" ";
- cout<<endl;
- cout<<larger(data_int, data_float, count);
- return 0;
- }
复制代码
代码中主函数larger出报错没有与参数列表匹配的函数模板larger实例,这到底是为什么呢?
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 容器
|