声明为private成员,我必须写一个C++代码也必须执行下列类的多个对象的排序:不能访问
class student
{
int roll, m[5], total;
bool pass;
char name[30];
public:
void read();
void result();
void print();
void operator=(student&);
friend void sort(student, int);
};
void sort(student var[], int size)
{
int s,t;
for (s = 0; s<size; s++)
for (t = 0; t<size; t++)
{
if (var[s].total<var[t].total) //---------line 22----------
{
student x;
x = var[s];
var[s] = var[t];
var[t] = x;
}
}
}
void student::operator=(student &x)
{
roll=x.roll;
strcpy_s(name,x.name);
for(int v=0;v<5;v++)
m[v]=x.m[v];
total=x.total;
pass=x.pass;
}
void main()
{
student s[4];
int ni, n;
cout<<"Enter number of student records: ";
cin >> n;
for (ni = 0; ni<n; ni++)
{
s[ni].read();
s[ni].result();
}
sort(s, n);
cout<<endl<<"List sorted based on total: "<<endl;
for (ni = 0; ni<n; ni++)
{
s[ni].print();
}
}
我使用Visual C++ 2008年当我编译此代码它显示两个错误:
Error1 error C2248:'student::total': cannot access private member declared in class 'student'
Error2 error C2248:'student::total': cannot access private member declared in class 'student'
这些错误显示在访问总数的同一行22中。虽然sort()
是朋友函数,但我得到了这个可访问性错误。
我注意到如果总宣布公开,那就没有错误。 但按照类规范,它必须是私有的。请帮帮我。
'无效排序(学生VAR [], int size)'不是'friend void sort(student,int);'的函数。 – 2014-10-18 18:33:37
朋友无效排序(student [],int);谢谢。 – 2014-10-18 18:36:17
你不需要一个赋值操作符。自动生成的就足够了。 – 2014-10-18 19:01:11