今日初めて知ったんですけど、C# とかで使われてる property って、Microsoft のコンパイラ限定であれば C++ でも使えるんですね。
class Hoge
{
public:
Hoge() : _value(0) { }
public:
__declspec(property(get=GetValue, put=SetValue))
int Value;
int GetValue() { return _value; }
void SetValue(int value) { _value = value; }
private:
int _value;
};
void main()
{
Hoge hoge;
hoge.Value = 10;
hoge.Value += 10;
}
__declspec すごΣ(゚Д゚)
他にも、
__declspec(thread) int value;
ってすれば、スレッド毎に value が生成されるみたいです。
__declspec すごΣr(‘Д‘n)
追記:
複数の値を取る property もいけるようです。
class Hoge
{
public:
Hoge(){ ::memset(_aValue, 0, sizeof(_aValue)); }
public:
__declspec(property(get=GetValue, put=SetValue))
int Value[];
int GetValue(int x, int y) { return _aValue[y][x]; }
void SetValue(int x, int y, int value) { _aValue[y][x] = value; }
private:
int _aValue[10][10];
};
void main()
{
Hoge hoge;
hoge.Value[0][1] = 2;
hoge.Value[2][3] += 10;
}
__declspec すご( ̄□ ̄;)!!