相关疑难解决方法(0)

我如何迭代枚举?

我只是注意到你不能在枚举上使用标准数学运算符,如++或+ =

那么迭代C++枚举中所有值的最佳方法是什么?

c++ enums

282
推荐指数
12
解决办法
29万
查看次数

在C中使用枚举类型的变量作为字符串的简单方法?

这是我想要做的:

typedef enum { ONE, TWO, THREE } Numbers;
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个函数来执行类似于以下的切换案例:

char num_str[10];
int process_numbers_str(Numbers num) {
  switch(num) {
    case ONE:
    case TWO:
    case THREE:
    {
      strcpy(num_str, num); //some way to get the symbolic constant name in here?
    } break;
    default:
      return 0; //no match
  return 1;
}
Run Code Online (Sandbox Code Playgroud)

而不是在每种情况下定义,有没有办法使用枚举变量设置它,就像我在上面尝试做的那样?

c enums c-preprocessor

86
推荐指数
8
解决办法
9万
查看次数

在C++中将int转换为枚举的通用方法

有没有投一个通用的方法int,以enumC++

如果int落在一个范围内enum它应该返回一个enum值,否则抛出一个exception.有没有办法一般地写它?不止一个enum type应予以支持.

背景:我有一个外部枚举类型,无法控制源代码.我想将此值存储在数据库中并检索它.

c++ enums casting

79
推荐指数
2
解决办法
6万
查看次数

是否允许枚举具有未列出的值?

说,我们有

enum E
{
  Foo = 0,
  Bar = 1
};
Run Code Online (Sandbox Code Playgroud)

现在,我们做到了

enum E v = ( enum E ) 2;
Run Code Online (Sandbox Code Playgroud)

然后

switch ( v )
{
  case Foo:
    doFoo();
  break;
  case Bar:
    doBar();
  break;
  default:
    // Is the compiler required to honor this?
    doOther();
  break;
}
Run Code Online (Sandbox Code Playgroud)

由于上面的开关处理枚举的每个可能列出的值,是否允许编译器优化掉default上面的分支,或者在enum的值不在列表中的情况下具有未指定或未定义的行为?

正如我期望C和C++的行为应该类似,问题在于两种语言.但是,如果在这种情况下C和C++之间存在差异,那么了解它也会很好.

c c++ enums language-lawyer

36
推荐指数
2
解决办法
3995
查看次数

我应该如何检查基础类型值是否为枚举值?

让我们I成为一个整体类型.现在假设我有一个enum class my_enum_class : I,可能不连续的值.现在我得到了一些I价值.如何检查它是否是枚举的值my_enum_class

类似问题的答案(对于C语言)假设值是连续的,并且可以添加"虚拟"上限值,并检查0和该值之间的范围; 这与我的情况无关.还有另一种方法吗?

c++ enums

10
推荐指数
2
解决办法
623
查看次数

validate integer是一些枚举类项(C++ 11)

我有一些枚举课

enum class Foo { A=1, B=18 , Z=42 };
Run Code Online (Sandbox Code Playgroud)

我想检查是否可以将某个整数转换为a Foo.这样做的理想方式是什么?这是用于运行时检查(在编译时尚不知道整数)

显然我可以用这种方式做到这一点(编写一个bool CheckEnum(Foo);带有大屁股开关的函数,除了默认情况下,所有情况都返回true),但我希望有一个更优雅的机制,避免这么多的写作.MPL或Boost.Preprocessor将是一个完全可以接受的解决方案,但其中一个我遗憾地知道很少

c++ c++11 enum-class

8
推荐指数
1
解决办法
3046
查看次数

是否允许编译器优化依赖于具有未声明值的枚举的分支?

或者另一种表达方式的方法是:编译器是否可以假设一个实例enum只能保存声明为基于该假设而保持和优化的值?

enum MyType { A = 1, B = 2 };

const MyType C = static_cast<MyType>(3);

void fun(MyType m) {
    switch (m) {
        case A:
            // ...
            break;
        case B:
            // ...
            break;
        case C:
            // can this be optimized away?
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ compiler-optimization

5
推荐指数
1
解决办法
247
查看次数