プライベート メンバー ベクトルを持つ 2 つ (またはそれ以上) のクラスがあるとします。
class A {
private:
std::vector<X> priv_vec;
public:
//more stuff
}
class B {
private:
std::vector<Y> priv_vec;
public:
//more stuff
}
そして、状態を持ち、汎用ベクトルで機能するファンクタークラスがあります(要素の並べ替えやカウントなどを行います)。ファンクターの状態は、ファンクターが作業している最初のベクトルによって初期化されます。ファンクターが後で別のベクターに適用される場合、状態に応じて動作が変わります (同じ方法でソートするか、最初のベクターと同じ数の要素の後に 2 番目のベクターをトリミングするなど)。
プライベートベクターを他のクラスまたはクラスのユーザーに公開せずに、そのようなファンクター (設計パターンまたは関数インターフェイス?) を実装する最良の方法は何ですか?
例: ユーザーは、クラス A のオブジェクトでこのファンクターを初期化し、クラス B の 1 つまたは複数のオブジェクトに対してこの初期化されたファンクターを使用したいと考えています。ユーザーはプライベート ベクトルを使用できません (使用すべきではありません)。ファンクターの関数引数として直接。