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系コンパイラ限定のノウハウとなります。残念ながら移植性を考慮した場合は使えなさそうです。