-1

クラス変数へのアクセスをパブリックからプライベートに変更しました。

次に、ゲッターとセッターを作成しました(100変数)

しばらくして、それが完了した後、

これらの変数のいずれかに直接アクセスして、これらの 100 個の変数のすべてを経由せずに設定/取得する方法を自動化するにはどうすればよいでしょうか。大規模なプロジェクトでは、ほぼどこからでも変数にアクセスすることがあるため、手動で行うのは少し困難です。

私はEclipse IDE、c++プロジェクトを使用しています

4

1 に答える 1

3

プロジェクトが非常に大きく、それにプライベート メンバー コントロールを後付けしている場合は、別の方法を使用すると便利な場合があります。ゲッターをまったく実装せずに、セッターのみを実装します。基礎となる各プライベート メンバー変数へのパブリック参照を定義しconstます。これは、その "getter" として機能します。このデータを読み取るコードは変更されません。これらの変数を設定するコードを更新するだけで済み、更新の手間が大幅に軽減されます。このルートに進む場合は、次のように、コンストラクターでこれらのパブリック参照を初期化する必要があります。

class fred {
public:
    fred() : stone(_stone) {} // every constructor must initialize all public references like this
    void set_stone(int s) { _stone = s; }
    int get_stone() { return _stone; } // Instead of this (or, in ADDITION to this), do this....
    const int& stone; // const public reference to internal private data member
private:
    int _stone;
}

そのソリューションを永続的に使用することも、(「いつか」) すべてのゲッターの更新を完了するまでのみ使用することもできます。個人的には、内部データのデータ型が明らかで変更されないクラスの場合、このソリューションを使用して記述されたコードは読みやすいため、とにかくこのソリューションを好みます。メソッドを呼び出すのではなく、単にデータ メンバーにアクセスしているように見えるセッター メソッドを記述できる機能がC++にあればいいのにと思います。operator classmember_setter<membername>()これにより、setter メソッドで得られるよりもはるかにきれいなコードが得られます。

于 2013-09-23T18:58:09.040 に答える