2016-05-29 10 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

コンストラクタの初期化で何が問題になっていますか?それはとにかくスタイルの唯一の問題です。 – HolyBlackCat

+0

@HolyBlackCat最悪の場合、初期化は実行時に行われますが、コンパイル時に行うことができます – tohaz

答えて

2

ない完璧なソリューション...ネストされた構造体を初期化するための構文はありますか?

はい、その構造体はコンストラクタと呼ばれ、既に使用しています。

+1

"以下のコードは、コンストラクタを使用し、コンパイラを使用して定数を定数に最適化しています。" – tohaz

+1

@tohaz:まさに私が言っていることです。これをより明確にするために:いいえ、いい方法はありません。なぜなら、c'torsは* right *と* only *なのであるからです。 –

関連する問題