1
構造体のベクトルを含む類似の構造を持つ2つのクラス(A & B)があります。他のクラスの複数のオブジェクトのプライベートメンバーベクトルにアクセス
class A/B{
private: std::vector<DataStruct> vec_A/vec_B;
...
public:
...
}
Bのオブジェクトを更新/作成するには、私は、オブジェクトBのベクトルに1つのエントリにベクターに同様のエントリを組み合わせる(クラスAの複数のオブジェクトのベクトルからのデータを組み合わせてデータを行う必要がB)における変換。
どうすればよいですか? A.の友人
- メイキングクラスBしかし、私はC++のクラスの友達を作ることは最後であり、避けるべきであること、聞いた:
私の考えでした。
- ベクトル
vec_A
への参照を返すクラスAにgetVector()
関数を記述すると、クラスBはデータに対して操作できます。私にとっては、これは単にデータのカプセル化をバイパスするようです。ベクターを公開することのメリットは何ですか? vec_A
のコピーを返す、クラスAにgetVector()
関数を記述する。しかし、vec_A
はそれほど小さくはないので、これは非効率的であるようです(大丈夫ですが、ほんの数KBです。)- 計算を行い、クラスのオブジェクトを作成するクラスAの関数を記述しますB.その後、Bの複数のオブジェクトをBの1つの最終オブジェクトに連結します。しかし、これは私にとって大きなオーバーヘッドのようです。そのクラスBがデータを操作できるように、
Vector vec_A
を参照 を返すクラスAにおけるgetVector()
機能を、書き込み
Bにconst参照の 'vec_A'を与えることを考えましたか? – Xatyrian
@Xatyrianいいえ、これは良いアイデアのようです – Jounathaen