C++:cannot convert from 'char [9]' to 'char [20]'

来源:百度知道 编辑:UC知道 时间:2024/06/14 23:18:13
struct Record
{
char name[20];
int score;
};
class Team
{

public:
int num;
Record *p;
};
void main()
{
Team Team1;
Team1.num=10001;
Team1.p->name="WangFeng";
Team1.p->score=88;
}

在struct Record 中,name[20]定义了一个常量地址,是不可以修改的。只能通过strcpy等方式进行赋值。
而Team1.p->name="WangFeng"中,将一个常量地址进行修改,所以编译器说明错误。
可以如下定义:
struct Record
{
char *name;
int score;
};
class Team
{
public:
int num;
Record *p;
Team()
{
p = new Record();
}
~Team()
{
delete p;
}
};
int main(int argc,char *argv)
{
Team Team1;
Team1.num=10001;
Team1.p->name="WangFeng";
Team1.p->score=88;
}

Team1.p->name="WangFeng"; 这里WANGFENG串只有9长度,而name是20个长度,不匹配