布尔控制ENUM - C ++的内容

时间:2013-03-11 11:34:04

标签: c++ enums boolean

我有一个方法参数的ENUM。这个ENUM是一个班级的私人成员,比如说

class Method

我有两种变体用于此方法。参数列表几乎相同。对于该方法的第二变体,将3个参数附加到第一变体的参数列表中。

我想用布尔值来做,第二个变量设置为true。是否有可能有这样的事情:

enum EcolId {
    P1,
    P2,
    P3,

    if(m_bool)
    {
         P4,
         P5
    }
}
如果没有,我该怎么办?

我别无选择,只能在这里使用ENUM。

谢谢

2 个答案:

答案 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

作为替代方案,当使用非处理值时,您可以在第一个变体中生成错误。

让我感到恼火的是你谈论扩展参数的列表。我希望你的意思是你要扩展的一个参数的值列表。