【发布时间】:2017-08-03 08:57:28
【问题描述】:
我有两个具有相似结构的类(A 和 B),它们都包含一个结构向量。
class A/B{
private: std::vector<DataStruct> vec_A/vec_B;
...
public:
...
}
要创建/更新 B 的对象,我必须组合 A 类的多个对象的向量中的数据(将向量中的相似条目组合成对象 B 的向量中的一个条目,并在 B 中进行数据转换) .
我该怎么做?
我的想法是:
- 让 B 类成为 A 的朋友。但我听说,在 C++ 中让类成为朋友只是最后的手段,应该避免。
- 在 A 类中编写
getVector()函数,该函数返回对 Vectorvec_A的引用,以便 B 类可以对数据进行操作。对我来说,这似乎只是绕过了数据封装。将向量设置为公开有什么好处? - 在 A 类中编写
getVector()函数,该函数返回vec_A的副本。但由于vec_A不是那么小,这似乎效率低下(好吧,只有几 kB。应该可以工作,但总的来说......) - 为 A 类编写一个函数,该函数进行计算并创建 B 类的对象。然后将 B 的多个对象连接到 B 的最终对象中。但是,这对我来说似乎是很多开销。李>
【问题讨论】:
-
你考虑过给 B 一个常量引用
vec_A吗? -
@Xatyrian 不,但这似乎是个好主意
标签: c++ c++11 encapsulation