C++程序帮忙调试下

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:51:52
class Classmate: virtual public Person
{
protected:
char classname[9];
char school[9];
public:
void setclassname(char a){classname=a;}
char getclassname(){return classname;}
void setschool(char a){school=a;}
char getschool(){return school;}
};
请问为什么不能输入一个char a做形参?请问怎么改?

a为char型,classname为char型数组,类型不匹配,应该为
void setclassname(char a[]){classname=a;}
同样应该为
void setschool(char a[]){school=a;}

同样你的类继承上 virtual public Person
这样好像有问题应该为
class Classmate: public Person
{
};
也就是不需要加vertual,virtual主要是为了成员函数实现多态而出现的

void setclassname(char *a)
void setschool(char *a)
把a改成字符指针型

原因是:classname是一个字符数组,一个有9个字符的数组,给数组赋值一般只有两种,一种是用指针给它赋值,还有一种是用数组给它赋值。而你现在是用一个字符给一个含9个字符的数组赋值,可以想象这显然是不行的哦。
只要你把char a 改成数组或引用。

用指针char *a或数组char a[],char a是一个字符,你要输入的是一个字符串