我应该提一下,我使用Turbo C ++(是旧的),因为我的学校需要它。
我有这样的结构:
struct move{
int power;
int pp;
char name[10];
};
当我尝试创建一个新变量时:
move tackle;
tackle.pp = 10;
tackle.power = 20;
tackle.name = "tackle";
我收到错误:
Error NONAME00.CPP 11: Lvalue required
但这有效:
move tackle = {20, 10, "tackle"}
它有效。
我做错了什么?
P.S。第11行是tackle.name = "tackle"
,如果我之前不清楚则很抱歉。
答案 0 :(得分:3)
您无法分配数组,但可以初始化它。
tackle.name = "tackle";
是一项作业,而
move tackle = {20, 10, "tackle"};
是初始化。
要替换数组的内容,请使用strcpy
:
strcpy(tackle.name, "tackle");
或者,更好的是,如果您被允许,请使用string
:
#include <string>
struct move{
int power;
int pp;
string name;
};
答案 1 :(得分:2)
您正在使用c风格的字符串,您应该通过
初始化它strcpy(tackle.name, "tackle");
答案 2 :(得分:0)
这一行
tackle.name = "tackle";
尝试将一个数组分配给另一个数组,而不是C或C ++中支持的操作。
然而,char name[10] = "tackle"
之类的初始化在标准中很好,并且受到支持。