我必須在一定條件下生成包含某些字段的數據結構。這通常總是轉換爲類似下面的在編譯時動態生成結構
struct MyStruct {
int alwaysHere;
#ifdef WHATEVER
bool mightBeHere;
#endif
char somethingElse;
#if SOME_CONSTANT > SOME_VALUE
uint8_t alywasHereButDifferentSize;
#else
uint16_t alywasHereButDifferentSize;
#endif
...
};
從我的角度來看這很容易變得醜陋來看待,且無法讀取。 甚至沒有談論處理這些字段的代碼,通常在 ifdefs也是如此。
我正在尋找一個優雅的方式來實現相同的結果,而不增加任何開銷,但代碼很多 更具可讀性。模板專業化似乎有點過分,但我認爲 是唯一的選擇。
C++ 11是否添加了任何東西來處理這種情況?
任何建議,將不勝感激。
加上union之外的其他變量,它可以指示正在使用哪個字段。 – 2012-07-07 15:40:31