访问其他类中多个对象的私有成员向量
Access private member vector of multiple objects in other class
我有两个结构相似的类(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 的一个最终对象。但是,这对我来说似乎开销很大。
在类 A 中编写一个返回引用的
getVector()
函数 到Vector vec_A
,以便类 B 可以对数据进行操作。给我的 这似乎只是绕过了数据封装。会是什么 将矢量设置为公共的优势?
如果 B 只需要观察vec_A
的内容,考虑返回一个const
引用 (const &
(:
class A {
...
public:
// Give read-only access to vec_A
const std::vector<DataStruct> & getVector() const {
return vec_A;
}
};
我更喜欢这个解决方案,而不是仅仅公开矢量数据成员:使用访问器(getter/setter(,您可以更好地控制。例如,您可以实现只读访问(如上所示(。或者,如果你想提供一个 setter,你也可以对输入参数等进行一些检查。
相关文章:
- C++:从其他类访问结构的私有成员向量
- 访问类成员向量最后一项的正确方法
- 将字符串推送到私有成员向量
- 访问其他类中多个对象的私有成员向量
- 如何在类的构造函数中定义成员向量的大小
- 如何对类成员向量进行排序
- 从向量中擦除元素是否也会擦除元素中存在的所有成员向量
- 尝试从成员函数推送时不维护元素的成员向量
- C++ |无法将项添加到类成员向量
- 如何创建过滤流的成员向量
- 使用大型数据集初始化类成员向量的最有效方法
- 将C 成员向量包裹为Python命令
- 尝试保存到成员向量的连接-一次只保存一个
- 类成员向量上的迭代器未正确取消引用
- 如何在c++11中返回类成员向量
- 初始化构造函数C++中的成员向量
- 将类成员向量的内容复制到另一个向量中,然后将其交换回
- 推送到成员向量时的隔离错误
- 在堆上创建多态对象的数据成员向量
- 将此指针推回专用静态成员向量