c++でプロパティ

このところC#一辺倒でc++など忘れかけていたシーラカンスでありますが、最近またc++をいじり始めました。

よく言われていることではありますが、c++に対してC#の優れているところは、Visuralホニャララなrad環境との親和性にあると思っています。メソッド名やクラス名を書いている途中で、勝手にインテリセンスが働くのは何とも嬉しい限りです。また、リファクタリング機能がexpress版に標準装備というのもホゲホゲプログラマな自分にとっては嬉しいことです。

まあ、だから何だって感じなんですが(w

で、今回はC#で他に便利だと感じた機能 - プロパティを何とかc++で実現できないかと考えてみました。プロパティというのは見かけ上のフィールドアクセスをメソッドコールに置き換える機能です。使い方としては、例えば仕様変更が頻繁なプロトタイピング時はフィールドをpublic属性にしておき、仕様が安定してきたらそれをprivateフィールド & プロパティに置き換える、なんてことができます。またメソッド呼び出しを行えるので、値の範囲を厳密に絞るなんてこともできます。最初からsetter/getterを書いてもいいのですが、それが面倒な人向けですね。逆に言えば、無くてもいい機能とも言えますが・・・

とにかく、c++でプロパティを実装することを考えてみます。やり方としては以下のような

  1. プロパティ用プロキシオブジェクトを作成する
  2. コンパイラの独自拡張に頼る

が考えられるかと思います。次回からはこれら一つ一つを実際に実装していくことにします。