VCL 에서는 __property 를 제공하여 쉽게 속성을 이용하여 클래스를 설계할 수 있습니다.
일반 클래스에서는 Get/Set 함수 이름을 이용하거나 함수오버로딩을 이용하여 해결했습니다.
윈도우즈에서는 __declspec(property(get=get_func_name, put=put_func_name)) variable; 를 이용해서 속성을 만들 수 있습니다 ;]
property 를 이용하여 클래스 표현하기<
#include <windows.h>
#include <stdio.h>
#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;
}
<
|