C++ 具有整数范围的枚举

C++ 具有整数范围的枚举,c++,enums,C++,Enums,我希望doorPosition_DEG的值在1-90(度)之间。有可能这样做吗?方便吗 enum doorPosition_DEG {0,1,2,3,4... 90 }; 似乎是enum doorPosition_DEG{0-90}无效否,无法执行此操作。你必须给每个人起自己的名字。您有两个选择: 你可以给每个人取自己的名字 您可以使用int,必要时验证它是否在[0,90]中: int doorPosition = 32; // e.g. when storing // or when us

我希望doorPosition_DEG的值在1-90(度)之间。有可能这样做吗?方便吗

enum doorPosition_DEG {0,1,2,3,4... 90 };

似乎是
enum doorPosition_DEG{0-90}无效

否,无法执行此操作。你必须给每个人起自己的名字。您有两个选择:

你可以给每个人取自己的名字

您可以使用
int
,必要时验证它是否在[0,90]中:

int doorPosition = 32; // e.g. when storing

// or when using (use whatever error handling you'd like)
void setDoorPosition (int pos) {
   if (pos < 0 || pos > 90)
      throw runtime_error("Door position must be from 0 to 90.");
}

您还可以定义一个用于表示位置的小型自定义类,使用
0,您必须为每个位置指定一个名称我宁愿使用
int doorPosition_DEG
,并在需要时检查非法值。只要检查是否可能,现在看到了它的不足之处,如果没有名字,你将如何使用Enm WalePosithyDEG的特定位置?C++没有像内置的范围受限的整数。您可以创建自己的类或导入一个类,但所有检查都会带来运行时惩罚。@lizusek真见鬼。我完全被绊倒了。一分钟。
typedef int DoorPosition;
class DoorPosition {

private:

  int position;

public: 

  explicit DoorPosition (int p) {
     setPosition(p);
  }

  void setPosition (int p) {
     if (p < 0 || p > 90)
        throw runtime_error("Door position must be from 0 to 90.");
     // ^ or optionally clamp to valid range, if that's more appropriate
     position = p;
  }

  int getPosition () const {
     return position;
  }

};