MoniWikiCpp_enum
Login:
Password:
´ë¹®|ã±â|¹Ù²ï±Û|¸ñ·Ï|¸Þ¸ðÀå|Ã¥°¥ÇÇ|¿¬²É|¸µÅ©
Edit Diff Reload Search Print Info Mail Help RSS

2006.09.16
0 ±âº»ÀûÀÎ enum
1 C++¿¡¼­ÀÇ enum
1 class ³»ºÎ¿¡¼­ ¼±¾ðµÇ´Â enum
1 const¿¡¼­ Çß¾î¾ß ÇÏ´Â ¾ê±â.

enumÀ» º¸ÁÒ.
À½... »ç½Ç ¾î·Á¿î ¾ê±â´Â ¾ø½À´Ï´Ù.
4¹øÀº ¸ð¸£½Ã´Â ºÐµéµµ ÀÖÀ»Áö ¸ô¶ó¿ä. ºÁµÎ¸é ÁÁ°ÚÁÒ?
(Ãâó; http://jof4002.net/?CppKeywords/enum)

0 ±âº»ÀûÀÎ 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;                     // ¾ÈµÉ ÀÌÀ¯°¡ ¾øÀݼö?

1 class ³»ºÎ¿¡¼­ ¼±¾ðµÇ´Â enum #


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);
ÀÌ·± ½ÄÀ¸·Î »ç¿ëÇؼ­ ÀÌÇØÇϱ⠽±µµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.

1 const¿¡¼­ Çß¾î¾ß ÇÏ´Â ¾ê±â. #


¿©±â¼­ ±×·³ ´Ù½Ã const¿¡ ´ëÇØ º¼°Ô ÀÖ½À´Ï´Ù. \\
const¿¡¼­ ÇѲ¨¹ø¿¡ ÇÏ·Á°í ÇßÀ¸³ª ³Ê¹« ±æ¾îÁö´Â °Í °°¾Æ¼­ ¿©±â¼­ ÇÕ´Ï´Ù. \\
(»ç½ÇÀº ÀÌ·±°Ô ÀÖ´Ù´Â °É ±î¸Ô¾ú¾ú½À´Ï´Ù. -_-;)

xxx.h

cpp
class CError
{
public:
    static const int MAX_VALUE = 10;
    // ...
};

xxx.cpp

cpp
const int CError::MAX_VALUE;

ÇöÀçÀÇ 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 };
    // ...
};

2) ¾Æ·¡ÂÊ¿¡ ¼±¾ð
xxx.h

cpp
class CBelow
{
public:
    static const int MAX_VALUE;
    // ...
};

xxx.cpp

cpp
const int CBelow::MAX_VALUE = 10;

µÎ °æ¿ì ¸ðµÎ »ç¿ëÇÏ´Â ¹ýÀº °°½À´Ï´Ù.

³¡~

November, 2024
 12
3456789
10111213141516
17181920212223
24252627282930

¾èÀº Áö½ÄÀº À§ÇèÇÏ´Ù.

CategoryEmpty
¹Ù¶÷02
Ã¥°¥ÇÇ_Agile_Pr
Ã¥°¥ÇÇ_EffectiveC_03
last modified 2006-09-16 06:05:49
°íÄ¡±â|ã±â|ÂÊ Áö¿ì±â|ºñ½ÁÇÑ ÂÊ Valid XHTML 1.0! Valid CSS! powerd by MoniWiki
0.0177 sec