struct student
{
int age;
string name;
int id;
};
初始化:
student st1={10, "li ming", 01};
修改某个成员变量的值:st1.id = 11;
下面谈我遇到的问题:id的接口准备好了,然而不知道name的值,也就是只需要把age和id进行设置就可以了
已经存在的代码 const student st1 = {l_age};
我需要将id计算出来并且添加进去,const student st1 = {l_age, l_id};//这是不对的,顺序初始化,没有对name进行初始化。顺序的缺陷是必须按成员定义的顺序逐个初始化,不能间隔。
转到乱序初始化:
student st1={ .age = 10,
.name = "li ming",
.id = 01};//C风格
或者
student st1={ age : 10,
name : "li ming",
id : 01};//C++ 风格
但是gcc不支持后缀名为cpp的文件使用这种方式!!!!
项目中是CPP后缀的文件,使用这种方式后编译提示sorry, unimplemented: non-trivial designated initializers not supported。
最后解决办法:
student st1 = {l_age};
st1.id = l_id;
虽然很ugly,只能等后面做name计算的团队去重构了,呵呵。