程序错误,如何改正,除了将类内成员改为公有答案之外??解答加分
#include <iostream>#include <string>
using namespace std;
class athlete{
public:
athlete(char *pname,char *pdept);
char * getname();
char * getdept();
private:
char *name;
char *dept;
};
//我把name和dept的类型改了,直接用申请动态内存并调用复制函数
//如果调用getname()和getdept()函数来返回name和dept
athlete::athlete(char *pname,char *pdept)
{
name=new char[strlen(pname)+1];
dept=new char[strlen(pdept)+1];
strcpy(name,pname);
strcpy(dept,pdept);
}
char * athlete::getname()
{
return name;
}
char * athlete::getdept()
{
return dept;
}
//但是返回的时候却说不能char*到int型,换成return *name,return *dept后不报错,运行出来不是定义的arr数组的参数,是随机数
//就是这个cout<<i+1<<"\t"<<arr[i].athlete::getname()<<' '<<arr[i].athlete::getdept()<<endl;
class game
{
public:
game(char *pname,int h,int m,int c,athlete *a);
void point();
public:
char *name;
int hour;
int minute;
int count;
athlete *arr;
};
game::game(char *pname,int h,int m,int c,athlete *a)
{
name=new char[strlen(pname)+1];
strcpy(name,pname);
hour=h;
minute=m;
count=c;
arr=a;
}
void game::point(){
int i;
cout<<"项目:"<<game::name<<"\t"<<"比赛时间:"<<game::hour<<"点"<<game::minute<<"分"<<endl;
cout<<"---------------------------------------------------------"<<endl;
for(i=0;i<game::count;i++)
cout<<i+1<<"\t"<<arr[i].name<<' '<<arr[i].dept<<endl;
//这里如果athlete类中name和dept不定义成public就不能调用,意思就是必须由定义的对象去调用name和dept哈???
//是不是????
}
int main(){
athlete *a;
athlete arr[3]={athlete("刘勇","商学院"),
athlete("周华","文学院"),
athlete("何川洋","法学院")};
a = arr;
game swimming("游泳",15,30,3,a);
swimming.point();
return 0;
}