2

たとえば、サイズX、サイズY、タイルのベクトル、名前など、いくつかのメンバーを持つマップクラスがあります。

外部からアクセスされる変数を管理するには、2 つの基本的な方法があります。

  • カプセル化されますが、多くのコードとより多くの入力 (setX() および getX() const 関数) が追加されます。
  • 外部から頻繁にアクセスされる変数をパブリックメンバーとして持ち、簡単に保つ

私はどちらも好きではありません。私はアイデアを思いつきました: 外部から const として機能するクラス メンバー (したがって、簡単に object.member にアクセスできますが、安全です) であり、クラス内では非 const です。ただし、私の知る限り、c++ にはそれがありません。私が知っている唯一の (醜い) 回避策は、すべてを const にして、クラス関数内で const キャストを使用することです。

C++ 11でこれに対するより良いアプローチはありますか? そのためのキーワードはありますか?

4

1 に答える 1

3

入力の量をわずかに減らすための簡単な回避策:

#define MEMBER(T,x) \
  private: T x##_; \
  public: T const& x () const { return x##_; }

struct A {
  MEMBER(int,x)
  MEMBER(double,y)
};

次に、クラス内で x_ と y_ を使用し、外部で x() と y() を使用できます。

于 2013-01-23T19:05:12.250 に答える