如果我有:
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
它旨在成为一个潜在独立的任意值,在每种使用的情况下,它可能取决于也可能不取决于构造函数参数。