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計算的團隊去重構了,呵呵。