0

我有一个用于方法参数的 ENUM。这个 ENUM 是一个类的私有成员,比如说

class Method

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

我想用一个布尔值来做,第二个变体设置为 true。是否有可能有这样的东西:

enum EcolId {
    P1,
    P2,
    P3,

    if(m_bool)
    {
         P4,
         P5
    }
}

如果没有,我该怎么办?

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

谢谢

4

2 回答 2

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;     
于 2013-03-11T11:42:02.937 回答
0

取决于变体的动机。

为什么不使用两个enums?

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

让我有点恼火的是,你谈到了扩展的参数列表。我希望您的意思是要扩展的一个参数的值列表。

于 2013-03-11T11:39:26.993 回答