访问其他 class 中多个对象的私有成员向量

Access private member vector of multiple objects in other class

我有两个具有相似结构的 classes (A & B),它们都包含一个结构向量。

class A/B{
private: std::vector<DataStruct> vec_A/vec_B;
...
public:
...
}

为了 create/update B 的一个对象,我必须将来自 class A 的多个对象的向量的数据组合起来(将向量中的相似条目合并为对象向量中的一个条目B 并在 B 中进行数据转换)。

我该怎么做?

我的想法是:

Writing a getVector() function in class A, which returns a reference to the Vector vec_A, so that class B can operate on the data. For me this seems to simply bypass the data encapsulation. What would be the advantage to setting the vector to public?

如果B只是需要观察vec_A的内容,考虑返回一个const引用(const &):

class A {
 ...
  public:

    // Give read-only access to vec_A
    const std::vector<DataStruct> & getVector() const {
        return vec_A;
    }
};

我更喜欢这种解决方案,而不是只制作矢量数据成员 public:使用访问器 (getter/setter),您可以更好地控制。例如,您可以实现只读访问(如上所示)。或者,如果你想提供一个setter,你也可以对输入参数等进行一些检查