枚举等价于常量,这是常识,但是如果我知道了对应的常量,如何构造相应的枚举值呢
我以前的做法:if(1 == constVal)enumVal = Apple;
现在学到了一个比较优雅的用法:enumVal = Enum(constVal)
代码:
#include <iostream>
enum Fruits {
Apple = 0,
Banana = 1,
Orange,
Peach,
WaterMelon,
Grape,
};
int main()
{
Fruits apple(Fruits(0));
switch (apple)
{
case Apple:
std::cout << " I am Apple!" << std::endl;
}
getchar();
}
输出:
I am Apple!
QA:
如果给定的整型值超出了枚举的范围呢?
测试:
测试环境VS2017
代码:
#include <iostream>
enum Fruits {
Apple = 0,
Banana = 1,
Orange,
Peach,
WaterMelon,
Grape,
};
int main()
{
Fruits apple(Fruits(0));
switch (apple)
{
case Apple:
std::cout << " I am Apple!" << std::endl;
}
Fruits SomeThing(Fruits(-1));
Fruits SomeThing2(Fruits(100));
if (-1 == SomeThing)
{
std::cout << " -1 euals something" << std::endl;
}
if (100 == SomeThing2)
{
std::cout << " 100 euals SomeThing2" << std::endl;
}
getchar();
}
结果:
I am Apple!
-1 euals something
100 euals SomeThing2
结论:C++贯彻一贯信任程序员的做法,鲁棒性由程序员自己维护。