我一直在試圖學習如何在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