2016-05-29 201 views
0

是否有語法來初始化DataItem dh.size元素爲sizeof(DataItem)?下面的代碼使用構造函數並依靠編譯器將事物優化爲常量值。不是完美的解決方案...是否有語法來初始化嵌套結構?默認嵌套結構初始化

struct DataHeader_t { 
    int sz = 0; 
    int type = 0; 
}; 

struct DataItem { 
    DataItem() {dh.sz = sizeof(DataItem);} 
    DataHeader_t dh; 
    float data1 = 0; 
    float data2 = 0; 
    ... 
}; 
+1

'int sz = sizeof * this'? – user657267

+2

在construtor中初始化事物有什麼問題?無論如何,這只是一個風格問題。 – HolyBlackCat

+0

@HolyBlackCat在最壞的情況下,初始化將在運行時完成,但它可以在編譯時完成 – tohaz

回答

2

不完美的解決方案......有沒有語法來初始化嵌套的結構?

是的,該結構稱爲構造函數,並且您已經在使用它。

+1

「下面的代碼使用構造函數並依靠編譯器將事物優化爲常量值」 – tohaz

+1

@tohaz:完全是,這就是我所說的,以及我所指的。爲了使這個更清楚:不,沒有更好的辦法,因爲c'tors是*正確*和*唯一*的方式。 –