我一直在试图学习如何在C++中正确使用枚举,并且我几乎不能理解如何处理它们。我做了一个简单的程序,改变交通信号灯使用枚举和按位运算:正确使用枚举C++
#include <iostream>
enum lights
{
green = 1,
yellow = 2,
red = 4,
control = 7
};
std::string change_light (std::string choice)
{
lights light;
int changed;
if (choice == "yellow")
light = yellow;
else if (choice == "red")
light = red;
else if (choice == "green")
light = green;
changed = control & light;
if (changed == red)
return "red";
else if (changed == yellow)
return "yellow";
else if (changed == green)
return "green";
}
int main()
{
std::string choice = "";
while (1)
{
std::cout << "What light do you want to turn on?" << std::endl;
std::cin >> choice;
std::cout << "Changed to " << change_light(choice) << std::endl;
}
return 0;
}
如何提高该程序,同时保持使用位操作和枚举的?如果你能告诉我如何改进它,这将大大提高我对正确使用枚举的理解。
感谢:d
该函数并没有真正做任何事情。它只是返回相同的字符串(如果它是其中一种颜色,否则未定义的行为)。 - 为什么不尝试从一种颜色切换到另一种颜色? – UncleBens 2011-02-27 11:52:41
'changed = control&light;'与'changed = light;'相同,在这种情况下。实际上,函数change_light只是返回它的输入。你的例子不是很强大。很难理解你想要做什么。 – wimh 2011-02-27 11:52:58
我只是为了试验枚举而做了这个功能。我想知道如何在使用枚举的同时使它更好。如果在使用枚举时有办法缩短它,请告诉我如何。我真的没有得到使用枚举。 – Lockhead 2011-02-27 11:58:04