我有一個C++類中下面的代碼:談到的#ifdef到在C模板元編程++
class Features
{
#define Feature_Size_A 12345
#define Feature_Size_B 45678
#define Feature_Size_C 78901
//#define Feature_Size_D 14725
const int Feature_Sum = 0
#ifdef Feature_Size_A
+ Feature_Size_A
#endif
#ifdef Feature_Size_B
+ Feature_Size_B
#endif
#ifdef Feature_Size_C
+ Feature_Size_C
#endif
#ifdef Feature_Size_D
+ Feature_Size_D
#endif
;
#ifdef Feature_Size_A
static float Feature_A[Feature_Size_A];
#endif
#ifdef Feature_Size_B
static float Feature_B[Feature_Size_B];
#endif
#ifdef Feature_Size_C
static float Feature_C[Feature_Size_C];
#endif
#ifdef Feature_Size_D
static float Feature_D[Feature_Size_D];
#endif
};
我以前註釋掉的功能,如4號線,編譯和運行不同的測試。但是現在我希望將該類作爲模板,因此我可以在同一個程序中實例化具有不同功能的多個版本。
我在想是這樣的:
template <bool Feature_A, bool Feature_B, bool Feature_C, bool Feature_D>
class Features
{
...
};
Features<true, true, true, false> f;
我試着用升壓:: MPL:矢量的,但我掙扎嚴厲。
順便說一句:這不是完整的代碼。原始代碼有25個功能。
我很感激每一個想法不涉及宏:-)
如何使用這些功能?他們是從'Features'類的外部訪問的嗎?它們應該可以用特定的名稱訪問還是可以被索引訪問?他們都是浮法陣列嗎? –