C++ ENUM-C+的布尔控制内容+;
我有一个方法参数的枚举。此枚举是类的私有成员,例如C++ ENUM-C+的布尔控制内容+;,c++,enums,boolean,C++,Enums,Boolean,我有一个方法参数的枚举。此枚举是类的私有成员,例如 class Method 这种方法有两种变体。参数列表几乎相同。对于方法的第二种变体,将在第一种变体的参数列表中附加3个参数 我想用一个布尔值来做,对于第二个变量,它被设置为true。有没有可能有这样的东西: enum EcolId { P1, P2, P3, if(m_bool) { P4, P5 } } enum EcolId1 { P1,
class Method
这种方法有两种变体。参数列表几乎相同。对于方法的第二种变体,将在第一种变体的参数列表中附加3个参数
我想用一个布尔值来做,对于第二个变量,它被设置为true。有没有可能有这样的东西:
enum EcolId {
P1,
P2,
P3,
if(m_bool)
{
P4,
P5
}
}
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;
如果没有,我该怎么办
我别无选择,只能在这里使用枚举
谢谢取决于变体的动机 为什么不使用两个
enum
s
或者,当使用未处理的值时,可以在第一个变量中生成错误
让我有点恼火的是,你谈论的参数列表被扩展了。我希望您指的是要扩展的某个参数的值列表。不,您不能这样做 你可以做:
enum EcolId {
P1,
P2,
P3,
#ifdef SOMETHING
P4,
P5
#endif
}
或者,您可以使用模板。大概是这样的:
enum EcolId {
P1,
P2,
P3,
if(m_bool)
{
P4,
P5
}
}
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;
enum EcolId1
{
P1,
P2,
P3,
};
enum EcolId2
{
P1,
P2,
P3,
P4,
P5,
};
模板
类方法
{
T enumvar;
...
}
...
方法有限公司;
方法更多;
是否使用两种不同的枚举?或者两个不同的类,可能继承自一个公共基类,每个类都有正确的枚举成员?是否有一个枚举并验证函数的输入?使用多态性可以更好地解决这个问题,但我们需要更多的细节来建议一个合理的解决方案。这可能有助于@aleguna,谢谢,但是我想在一个类中使用这个2变量枚举,因为我的设计是一个类和一个计算方法,标志设置为variant 1或variant 2i,就像第一个解决方案一样。什么东西?全局变量?它应该在哪里定义,但也应该设置为true或false?我想在构造函数中初始化这个变量,其中一个参数是控制枚举的布尔值的bool值。可以这样做吗?不,您必须使用#define,它必须在编译时知道。谢谢。我可以这样做吗:在.h文件的某个地方,#define STHG true
。然后构造函数Method::Method(bool b){STHG=b;}
?我想这是个坏主意,因为它在编译时是未知的,然后第二个解决方案是解决我的问题的唯一方法。我用一个枚举和代码其他部分的技巧解决了另一种方法,这样非种子参数就不会受到影响。无论如何谢谢你