私は以下のようなクラスを持っています:
class Foo {
private:
std::map<std::string, Bar*> bars_by_name;
std::map<std::string, Baz*> bazs_by_name;
};
ここで、ユーザーが両方のコレクションにアクセスできるようにしますが、オブジェクトをstd::mapsに格納している実装の詳細を非表示にします。代わりに、BarとBazは同じクラス階層に属しているため、コレクションの定数イテレーターや、場合によっては両方のコレクションからオブジェクトを返すカスタムイテレーターを返すメンバー関数が必要です。スタイルを考えると、C ++でこれを行う適切な方法は何でしょうか?Javaでは、おそらくメソッドの戻り型をIterableに設定するか、コレクションをunmodizableCollectionにラップします。