Programming - cpueblo.com

property 를 이용하여 클래스 표현하기 (ANSI C++)


글쓴이 : 유광희 날짜 : 2004-12-17 (금) 13:21 조회 : 16530
VCL 에서는 __property 를 제공하여 쉽게 속성을 이용하여 클래스를 설계할 수 있습니다.
일반 클래스에서는 Get/Set 함수 이름을 이용하거나 함수오버로딩을 이용하여 해결했습니다.
윈도우즈에서는 __declspec(property(get=get_func_name, put=put_func_name)) variable; 를 이용해서 속성을 만들 수 있습니다 ;]

property 를 이용하여 클래스 표현하기

#include 
#include 

#define property(DATATYPE, READ, WRITE) __declspec(property(get=READ, put=WRITE)) DATATYPE  

class CFoo
{
private:
    int myAge;
    int myChars[10][10];
public:
    int  GetAge(void) { return myAge; }
    void SetAge(int AAge) { myAge=AAge; }
    char GetChar(int x, int y) { return myChars[x][y]; }
    void SetChar(int x, int y, char c) { myChars[x][y] = c; }
    property(int, GetAge, SetAge) Age;
    property(char,GetChar, SetChar) Chars[];
    //:] 배열 변수는 이렇게 선언됩니다.
};

int main(void)
{
    CFoo iFoo;

    iFoo.Age = 100;
    iFoo.Chars[0][0] = 'a';
    iFoo.Chars[0][1] = 'b';
    printf("%d\\n", iFoo.Age);
    printf("%c%c\\n", iFoo.Chars[0][0], iFoo.Chars[0][1]);
    system("PAUSE");
    return 0;
}



MSDN 에서는..
__declspec( property( get=get_func_name ) ) declarator
__declspec( property( put=put_func_name ) ) declarator
__declspec( property( get=get_func_name, put=put_func_name ) ) declarator