#include <iostream>
using namespace std;
class sort_overload
{
int a[10];
public:
void sort(int ,int);
void display();
void getdata();
}s;
void sort_overload::sort(int first,int last) //quick sorting
{
int sort_overload :: *sp = &sort_overload :: a[0]; //pointer to the base address of a present in class sorted_overload
sort_overload *sp_obj = &s;
int pivot = sp_obj->*(sp+last);
int i=first,j=last;
int temp;
if(i<j)
{
while((sp_obj->*(sp+i)) < pivot)
i++;
while((sp_obj->*(sp+j)) > pivot)
j--;
if(i<j)
{
temp = (sp_obj->*(sp+i));
(sp_obj->*(sp+i)) = (sp_obj->*(sp+j));
sp_obj->*(sp+j) = pivot;
sp_obj->*(sp+last)=temp;
}
}
s.sort(first,j-1);
s.sort(j+1,last);
}
void sort_overload::display()
{
int sort_overload :: *sp = &sort_overload :: a;
sort_overload *sp_obj = &s;
for(int i=0;i<10;i++)
cout<<"Sorted array numbers:"<<sp_obj->*(sp+i)<<endl;
}
void sort_overload::getdata()
{
int sort_overload:: *sp = &sort_overload :: a;
sort_overload *sp_obj = &s;
cout<<"Enter numbers";
for(int i=0;i<10;i++)
cin>>sp_obj->*(sp+i);
}
int main()
{
s.getdata();
s.sort(0,9);
s.display();
return 0;
}
这句话给我一个错误:
int sort_overload :: *sp = &sort_overload :: a[0];
有人可以告诉我为什么会出现这个错误吗?
我尝试对10个整数值进行排序,并进一步重载它以对double和float值进行排序,但我仍然停留在排序部分。
答案 0 :(得分:2)
自
void sort_overload::sort(int first,int last)
是您班级的成员函数,您可以通过替换
来访问您的阵列int sort_overload :: *sp = &sort_overload :: a[0];
通过
int *sp = this->a;
或者更好的方法是使用this->a
代替sp
您无法使用语法:
&sort_overload :: a[0];
因为您的数组不是静态属性。