我正在通過Bjarne Stroustrup的C++編程語言進行工作,我被困在其中一個例子上。這裏是代碼,除了空格的差異和評論外,我的代碼與本書中的內容完全相同(第51頁)。無法在C++中定義++運算符,這裏有什麼問題?
enum class Traffic_light { green, yellow, red};
int main(int argc, const char * argv[])
{
Traffic_light light = Traffic_light::red;
// DEFINING OPERATORS FOR ENUM CLASSES
// enum classes don't have all the operators, must define them manually.
Traffic_light& operator++(Traffic_light& t) {
switch (t) {
case Traffic_light::green:
return t = Traffic_light::yellow;
case Traffic_light::yellow:
return t = Traffic_light::red;
case Traffic_light::red:
return t = Traffic_light::green;
}
}
return 0;
}
然而,當我與clang++ -std=c++11 -stdlib=libc++ -Weverything main.cpp
編譯它在Mac OS X 10.9,我得到了以下錯誤:
main.cpp:24:9: error: expected expression
switch (t) {
^
main.cpp:32:6: error: expected ';' at end of declaration
}
^
;
真正baffeler是expected expression
錯誤,但expected ;
是有問題的爲好。我做了什麼?
您試圖定義一個函數裏面的函數。你不能。 – 2014-01-07 16:19:56
只需在主要功能外執行此操作... –