出现了好几个无法将函数定义与现有的声明匹配

C++语言 码拜 9年前 (2016-04-15) 1358次浏览
小白求指导。
#include<iostream>
using namespace std;
template<class T>
class Sort
{
public:
void InputArray(T a[], int size);
void OutputArray(T a[], int size);
void insertionsort(T a[], int size);
void selection(T a[], int size);
void bubblesort(T a[], int size);
void shellsort(T a[], int size);
private:
T a[];
int size;
};
template<class T>
void Sort::InputArray(T a[],int size)
{
cout << “Please input size:” << endl;
cin >> size;
for (int i = 0; i < size; i++)
{
cout << “a[” << i << “]=”;
cin >> a[i];
}
}
template<class T>
void Sort::OutputArray(T a[], int size)
{
for (int i = 0; i < size; i++)
{
cout << a[i] << ” “;
}
cout << endl << endl;
}
template<class T>
void Sort::insertionsort(T a[], int size)
{
for (int i = 0; i < size; i++)
{
T tmp = a[i];
for (j = i; j > 0 && tmp < a[j – 1]; j–)
swap(a[j], a[j – 1]);
}
}
template<class T>
void Sort::selection(T a[], int size)
{
for (i = 0, j, least; i < size – 1; i++)
for (j = i + 1, least = i; j < size; j++)
if (a[j] < a[least])
swap(a[least], a[j]);
}
template<class T>
void Sort::bubblesort(T a[], int size)
{
for (i = 0; i < size – 1; i++)
for (j = size – 1; j > i; j–)
if (a[j] < a[j – 1])
swap(a[j], a[j – 1]);
}
template<class T>
void Sort::shellsort(T a[], int size)
{
for (int div = size / 2; div > 0; div /= 2)
{
for (int i = div; i < size; i++)
{
for (int j = i; j > 0 && a[j] < a[j – div]; j -= div)
swap(a[j], a[j – div]);
}
}
}
template<class T>
int main()
{
InputArray(T a[], int size);
insertionsort(T a[], int size);
OutputArray(T a[], int size);
selection(T a[], int size);
OutputArray(T a[], int size);
bubblesort(T a[], int size);
OutputArray(T a[], int size);
shellsort(T a[], int size);
OutputArray(T a[], int size);
return 0;
}
解决方案

40

template<class T>
void Sort<T>::InputArray(T a[],int size)

其它几个一样改。

80

你的main函数里写的有问题,题主是在声明函数?

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明出现了好几个无法将函数定义与现有的声明匹配
喜欢 (0)
[1034331897@qq.com]
分享 (0)