我有一个方法参数的ENUM。这个ENUM是一个班级的私人成员,比如说
class Method
我有两种变体用于此方法。参数列表几乎相同。对于该方法的第二变体,将3个参数附加到第一变体的参数列表中。
我想用布尔值来做,第二个变量设置为true。是否有可能有这样的事情:
enum EcolId {
P1,
P2,
P3,
if(m_bool)
{
P4,
P5
}
}
如果没有,我该怎么办?
我别无选择,只能在这里使用ENUM。
谢谢
答案 0 :(得分:2)
不,你不能这样做。
你可以这样做:
enum EcolId {
P1,
P2,
P3,
#ifdef SOMETHING
P4,
P5
#endif
}
或者,您可以使用模板。像这样:
enum EcolId1
{
P1,
P2,
P3,
};
enum EcolId2
{
P1,
P2,
P3,
P4,
P5,
};
template<typename T>
class Method
{
T enumvar;
...
}
...
Method<EcolId1> limited;
Method<EcolId2> more;
答案 1 :(得分:0)
取决于变体的动机。
为什么不使用两个enum
?
作为替代方案,当使用非处理值时,您可以在第一个变体中生成错误。
让我感到恼火的是你谈论扩展参数的列表。我希望你的意思是你要扩展的一个参数的值列表。