首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

对象数组和指针有关问题

2013-03-21 
对象数组和指针问题#includeiostreamusing namespace stdclass Student{public:Student(int n,int s):n

对象数组和指针问题


#include<iostream>
using namespace std;
class Student
{
public:
Student(int n,int s):num(n),score(s){};
void display();
private:
int num;
int score;
};


void Student::display()
{
cout<<"num:"<<num<<"\n"<<"score:"<<score<<endl;
}

int main()
{
Student stud[5]={Student(1001,100),Student(1002,99),Student(1003,98),Student(1004,97),Student(1005,96)};
void max(Student *);
Student *p=&stud[0];
max(p);

return 0;
}

void max(Student *arr)
{
int max_score=(arr+0)->score;
int k=0;
for(int i=1;i<5;i++)
{
if((arr+i)->score>max_score)
{
max_score=(arr+i)->score;
k=i;
}
}
cout<<(arr+k)->num<<":"<<max_score<<endl;

}
这段代码是老谭的一道习题,总是报错,提示私有成员不能访问
error C2248: 'score' : cannot access private member declared in class 'Student'。不知道错在哪里,怎么改,请指导。
[解决办法]
#include<iostream>
using namespace std;
class Student
{
public:
    Student(int n,int s):num(n),score(s){};
    void display();
private:
    int num;
    int score;
    friend void max(Student *arr);
};


void Student::display()
{
    cout<<"num:"<<num<<"\n"<<"score:"<<score<<endl;
}

int main()
{
    Student stud[5]={Student(1001,100),Student(1002,99),Student(1003,98),Student(1004,97),Student(1005,96)};
    Student *p=&stud[0];
    max(p);

    return 0;
}

void max(Student *arr)
{
    int max_score=(arr+0)->score;
    int k=0;
    for(int i=1;i<5;i++)
    {
        if((arr+i)->score>max_score)
        {
            max_score=(arr+i)->score;
            k=i;
        }
    }
    cout<<(arr+k)->num<<":"<<max_score<<endl;

}

热点排行
Bad Request.