Re: [問題] about enum
※ 引述《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
→
140.114.219.51 05/21, , 1F
140.114.219.51 05/21, 1F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章