我写了个模板类,为了使cmp能对任意类型的数据来排序,但是却报错:错误 1 error C3867: “A::cmp”: 函数调用缺少参数列表;请使用“&A::cmp”创建指向成员的指针
求教这是为什么 该怎么改?
这是我的代码;
#include
#include
using namespace std;
template
class A{
public:
void up(T aa, int size){
qsort(aa, size, sizeof(*aa), cmp);
for (int i = 0; i < size; i++) cout << aa[i] << endl;
}
int cmp(const void *a, const void *b){
if ((T*)a > (T)b) return 1;
else return -1;
}
};
int main(){
A a;
int i[5] = { -1, 0, 6, 3, 0 };
a.up(i, 5);
system("pause");
}
int cmp(const void *a, const void *b)
这个不能是成员函数,放在类外面
既然你传的是数组,那么你就要把模板类参数设为数组,这样才能正确解析,以下代码已经经过编译,希望可以帮到你
template
class A
{
public:
void up(T aa, int size)
{
//qsort(aa, size, sizeof(*aa), cmp);
for (int i = 0; i < size; i++)
cout << aa[i] << endl;
}
int cmp(const void a, const void *b)
{
if ((T)a > (T)b) return 1;
else return -1;
}
};
int main()
{
A a;
int i[5] = { -1, 0, 6, 3, 0 };
a.up(i, 5);
system("pause");
return 0;
}
template
class A
{
public:
void up(T aa, int size)
{
//qsort(aa, size, sizeof(*aa), cmp);
for (int i = 0; i < size; i++)
cout << aa[i] << endl;
}
int cmp(const void a, const void *b)
{
if ((T)a > (T)b) return 1;
else return -1;
}
};
int main()
{
A a;
int i[5] = { -1, 0, 6, 3, 0 };
a.up(i, 5);
system("pause");
return 0;
}
实在抱歉,粘上的代码少了东西,我截了图传上来的是通过编译的
图片说明](https://img-ask.csdn.net/upload/201605/05/1462382411_665779.png)