C++ struct 初始化的問題


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM