聲明爲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