2006.09.16
enumÀ» º¸ÁÒ. À½... »ç½Ç ¾î·Á¿î ¾ê±â´Â ¾ø½À´Ï´Ù. 4¹øÀº ¸ð¸£½Ã´Â ºÐµéµµ ÀÖÀ»Áö ¸ô¶ó¿ä. ºÁµÎ¸é ÁÁ°ÚÁÒ? (Ãâó; http://jof4002.net/?CppKeywords/enum) cpp enum { red, green, blue };ÀÌ·¸°Ô ¼±¾ðÇϸé red, gree, blue¶ó´Â »ó¼ö°¡ ¼±¾ðµË´Ï´Ù. ±âº»ÀûÀ¸·Î´Â 0ºÎÅÍ ½ÃÀÛÇؼ 1¾¿ Áõ°¡ÇÏÁÒ? cpp enum COLOR { red = 1, green, blue = 10 };ÀÌ·¸°Ô ¼±¾ðÇϸé COLOR¶ó´Â ŸÀÔÀ¸·Î red, green, blue°¡ ¼±¾ðµË´Ï´Ù. red, green, blue´Â °¢°¢ 1, 2, 10ÀÇ °ªÀ» °¡ÁöÁÒ. enum ŸÀÔ ÀÚü¿¡ À̸§À» ÁÙ ¼öµµ, ¾È ÁÙ ¼öµµ ÀÖ½À´Ï´Ù. »óȲ¿¡ µû¶ó °¢ÀÚ ÆÇ´ÜÇؼ »ç¿ëÇϼ¼¿ä.
enumÀº »ó¼ö¸¦ »ç¿ëÇØ¾ß ÇÏ´Â ÀÚ¸®¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. °¡Àå ´ëÇ¥ÀûÀÎ°Ô switch³»ÀÇ case ¹®ÀÌÁÒ.
±×·³ Àá½Ã The C++ Programming LanguageÀÇ Äڵ带 º£³¢°Ú½À´Ï´Ù.
cpp enum e1 { dark, light }; // range 0:1 enum e2 { a = 3, b = 9 }; // range 0:15 enum e3 { min = -10, max = 1000000 }; // range -1048576:1048575Áï, enumÀÇ ¹üÀ§´Â ±× ¸ðµç ¼ö¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ´Â ºñÆ®¼ö°¡ µÈ´Ù´Â ¾ê±âÀÔ´Ï´Ù. cpp enum flag { x=1, y=2, z=4, e=8 }; // range 0:15 flag f1 = 5; // type error : 5´Â flag ÇüÀÌ ¾Æ´Ô. flag f2 = flag(5); // ok : flag(5)´Â flagÇüÀÌ°í ¹üÀ§µµ ¹®Á¦¾øÀ½. flag f3 = flag(z | e); // ok : flag(12)´Â flagÇüÀÌ°í ¹üÀ§µµ ¹®Á¦¾øÀ½. flag f4 = flag(99); // undefined : 99´Â flagÇüÀÇ ¹üÀ§¸¦ ¹þ¾î³². // f4ÀÇ °æ¿ì »ç½Ç ÄÄÆÄÀÏ ¿¡·¯°¡ ³ªÁö´Â ¾Ê½À´Ï´Ù.
±×·¸´Ù¸é enum¿¡ ´ëÇؼ sizeof¸¦ ÇÏ¸é ¾î¶³±î¿ä? Ã¥¿¡ µû¸£¸é sizeof(int)º¸´Ù´Â ÀÛ´Ù°í ÇÕ´Ï´Ù. \\
ÄÄÆÄÀÏ·¯¿¡ µû¶ó ´Ù¸¦ ¼öµµ ÀÖ´Ù´Â °ÍÀÌÁÒ. VC++¿¡¼´Â 4°¡ ³ª¿Ô½À´Ï´Ù. 1 C++¿¡¼ÀÇ enum #enumÀº User-defined typeÀÔ´Ï´Ù. µû¶ó¼ ´ÙÀ½°ú °°ÀÌ operator¸¦ Á¤ÀÇÇÏ´Â ÀÏÀÌ °¡´ÉÇÕ´Ï´Ù.cpp enum Day { sun, mon, tue, wed, thu, fri, sat }; Day& operator++(Day& d) { return d = (sat == d) ? sun : Day(d+1); }
´ÙÀ½ ¹®ÀåÀº C¿¡¼´Â °¡´ÉÇßÁö¸¸ C++¿¡¼´Â ¿¡·¯°¡ ³³´Ï´Ù.
cpp enum Direction { up, down }; Direction d1 = 1; // error Direction d2 = Direction(1); // ok int i1 = d2; // ¾ÈµÉ ÀÌÀ¯°¡ ¾øÀݼö?
const¿¡¼ Àá±ñ ¾ê±âÇß½À´Ï´Ù. Ŭ·¡½ºÀÇ »ó¼ö·Î¼ enumÀº Á¤¸» Æí¸®ÇÕ´Ï´Ù.
cpp class CColor { public: enum Rainbow { r, o, y, g, b, i, v }; // ... };
ÀÌ·¸°Ô ¼±¾ðÇÑ ´ÙÀ½¿¡
CColor::Rainbow ¶ó°í Çؼ º¯¼ö¸¦ ¼±¾ðÇϰųª, CColor::r, CColor::b ÀÌ·± ½ÄÀ¸·Î »ó¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð Ŭ·¡½º ³»ºÎ¿¡¼¶ó¸é CColor::Àº ÇÊ¿ä¾ø°ÚÁÒ.
¹è¿À» ¼±¾ðÇÒ ¶§ ´ÙÀ½°ú °°Àº ÇüÅ·εµ ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù.
cpp class CColorMenu { public: enum menuColor { colorBorder, colorBackground, colorText, colorGrayedText, colorHighlightText, colorHighlight, colorIconTransparent, numColors }; COLORREF m_Colors[numColors]; // ... };
À§¿Í °°ÀÌ ¼±¾ðÇϸé ÇÁ·Î±×·¥¿¡¼´Â
cpp m_Colors[colorText] = RGB(0, 0, 128);ÀÌ·± ½ÄÀ¸·Î »ç¿ëÇؼ ÀÌÇØÇϱ⠽±µµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿©±â¼ ±×·³ ´Ù½Ã const¿¡ ´ëÇØ º¼°Ô ÀÖ½À´Ï´Ù. \\
const¿¡¼ ÇѲ¨¹ø¿¡ ÇÏ·Á°í ÇßÀ¸³ª ³Ê¹« ±æ¾îÁö´Â °Í °°¾Æ¼ ¿©±â¼ ÇÕ´Ï´Ù. \\ (»ç½ÇÀº ÀÌ·±°Ô ÀÖ´Ù´Â °É ±î¸Ô¾ú¾ú½À´Ï´Ù. -_-;)
ÇöÀçÀÇ C++ ¹®¹ýÀº ÀÌ¿Í °°Àº ¹®ÀåÀ» Çã¿ëÇÕ´Ï´Ù. Áï, static const ¿¡ ´ëÇؼ Ŭ·¡½ºÀÇ ¼±¾ðºÎ¿¡¼ Ãʱâȸ¦ ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌÁÒ. (const°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù.)
±×·±µ¥!!!! Visual C++Àº ¹¹°¡ ¸¾¿¡ ¾Èµå´ÂÁö ÀÌ ¹®ÀåÀ» ¿¡·¯Ã³¸®ÇÕ´Ï´Ù! À¸¾Æ¾Æ¾Æ¾Æ~ Ʋ¸²¾øÀÌ ÀÌ ¹®¹ýÀÌ Çã¿ëµÈ ´ÙÀ½¿¡ VC++ 6.0ÀÌ ³ª¿ÔÀ»ÅÙµ¥~ Àú·¸°Ô Çϸé MAX_VALUE°¡ ¼ø¼ö °¡»ó ÇÔ¼ö´Ï±î = 0 À¸·Î ÃʱâÈÇؾßÇÑ´Ù°í ¿ì±é´Ï´Ù. <footnote(¿äÁò VC++¿¡¼´Â µÉ °Ì´Ï´Ù)>
»ó¼öÀÇ ½ÇÁ¦°ªÀ» Çì´õ¿¡ ¸í½ÃÇÒ ¼ö ¾ø´Ù´Â °ÍÀº ½½Ç ÀÏÀÔ´Ï´Ù. Àú ¿¡·¯¸¦ ÇÇÇϱâ À§Çؼ´Â enumÀ» »ç¿ëÇϰųª °ªÀ» ¾Æ·¡ÂÊ¿¡¼ Á¤ÀÇÇØÁà¾ß ÇÕ´Ï´Ù.
1) enum
cpp class CUsingEnum { public: enum { MAX_VALUE = 10 }; // ... };
µÎ °æ¿ì ¸ðµÎ »ç¿ëÇÏ´Â ¹ýÀº °°½À´Ï´Ù.
³¡~
|
¾èÀº Áö½ÄÀº À§ÇèÇÏ´Ù. CategoryEmpty ¹Ù¶÷02 Ã¥°¥ÇÇ_Agile_Pr Ã¥°¥ÇÇ_EffectiveC_03 |