C++ 具有整数范围的枚举
我希望doorPosition_DEG的值在1-90(度)之间。有可能这样做吗?方便吗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
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;
}
};