c++でプロパティ
では早速
2 コンパイラの独自拡張に頼る
を実装してみます。なんで最初に2かというと、こちらの方が簡単だからです(^^;
vc6 では以下のプロパティ構文をサポートしています。
int get_Size() { return m_size; } void set_Size(int value) { m_size = value; } __declspec(property(put = set_Size, get = get_Size)) int Size;
また、ManagedC++では
__property int get_Size() { return m_size; } __property void set_Size(int value) { m_size = value; }
C++/CLIでは、
property Size { int get() { return m_size; } void set(int value) { m_size = value; } }
のような記述ができます。
基本的にはBorland系のコンパイラでも似たようなことができるのですが、肝心のgccではできません。移植性を考慮してマクロを使ったとしてもwin系コンパイラ限定のノウハウとなります。残念ながら移植性を考慮した場合は使えなさそうです。