私が持っている場合:
Class MyClass {
public:
MyClass( /* args */ );
private:
someType member0;
someType member1;
// ...
someType memberN;
#if defined(FIRST_COMPILE_CONDITION)
someType condition1Member0;
someType condition1Member1;
// ...
someType condition1MemberN;
#endif
#if defined(SECOND_COMPILE_CONDITION)
someType condition2Member0;
someType condition2Member1;
// ...
someType condition2MemberN;
#endif
};
いくつかの任意の数のコンパイル条件について、永続的なメンバーを最後に配置せずに、これと同等のことを行うクリーンな方法はありますか (特に複数のコンパイル条件の場合)。
MyClass::MyClass( /* args */ ) :
member0( someValue ),
member1( someValue ),
// ...
memberN( someValue ),
#if defined(FIRST_COMPILE_CONDITION)
condition1Member0( someValue ),
condition1Member1( someValue ),
// ...
condition1MemberN( someValue ),
#endif
#if defined(SECOND_COMPILE_CONDITION)
condition2Member0( someValue ),
condition2Member1( someValue ),
// ...
condition2MemberN( someValue ),
#endif
// ...
{
}
上記は、末尾のコンマが原因でほとんどの条件下でコンパイルされないためです。
明確にするために編集します。
someValue
は、使用されるそれぞれのケースでコンストラクターの引数に依存する場合と依存しない場合がある、潜在的に独立した任意の値であることを意図していることに、おそらく明示的に注意する必要があります。