3

私の質問は、アクセスが制限されたフレンドクラスのタイトルに多少似ています。しかし、私が定義する制限されたアクセスは「アクセスのみ」です。つまり、作業を行うメイン クラスがあり、デバッグ目的で内部を表示するのに役立つヘルパー クラスを作成しています。そのため、Main 内で Helper をフレンドとして定義しました。

ここで、Helper クラスにプライベート変数への読み取り専用アクセスを許可し、書き込みアクセスを許可しないようにします。出来ますか?

class Main {
 private:
  // DSs that I don't want to expose it to rest
  // even through getters and setters.
  DataStrcuture ds_;

  // I want a way to specify that no modifications should be
  // allowed through this helper.
  friend class Helper;
}

これで、ヘルパー クラスができました。

class Helper {
  Helper(Main *main) : main_(main) {
  }

  void ShowStatsAndDebugInfo() const {
    PrettyPrint(main_->ds_);
  }

 private:
  // I want this to always be used like a const variable.
  Main *main_;
}
4

0 に答える 0