看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《glob ( 人真複雜)》之銘言: : 看書上寫 enum 的用法 : enum spectrum {red,orange,green}; : char *colors[] = {"red","orange","green"}; : void main() : { : char c[10]; : enum spectrum color; : .. : .. : .. : .. : if(gets[c]!=NULL) ^ ^ (c) : { : for(color=red;color<=green;color++) // 這行失敗了!!! : if(strcmp(c,colors[color])== 0) : break; : } : . : . : . : } : error information : error C2676: binary '++' : : 'enum spectrum' does not define this operator or a conversion : to a type acceptable to the predefined operator : Error executing cl.exe. : ps. 不大懂他再說什麼說 是要我們自己定義嗎?! 你寫的都是用 C 的語法,卻使用 C++ compiler 來編譯, 上述若是用 C 規則來編就可以通過。在 VC++ 中的設定是 「屬性->C/C++->進階->編譯成 C 程式碼」,可針對個別檔案, 或整個專案來設定。 C++ 對於 enum type 是把它當做 user-defined type, 當 enum variable 做一般的數學運算時,如 enum spectrum c1 = red, c2 = orange; enum spectrum c3 = c1 + c2; /* 加的時候轉成int,結果賦予 c3, C ok 但 C++不能直接將 int assign給enum,必需 做 explicit cast */ enum spectrum c4 = (enum spectrum)(c1 + c2); /* C/C++ ok */ 而你所遇到的 ++ 這個 operator, C 可以用在 enum type, 而 C++ 則要求你要自己定義給你的 enum type 才能用。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.130.208.168
glob:非常感謝您!!! 140.114.219.51 05/21