【发布时间】:2017-11-04 09:15:27
【问题描述】:
在下面的代码中,B中的方法会修改A的成员向量。为了实现它,我通过引用返回向量。还有其他更好的做法吗?
class A {
public:
vector<int> &GetData() { return data_; }
private:
vector<int> data_;
};
class B {
public:
void Method(A *a) {
vector<int> &data = a->GetData();
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
};
【问题讨论】:
-
惯用的方式是
public: std::vector<int> data;。您的方法没有封装优势和过度设计的劣势。 -
“什么是惯用方式”往往是“主要基于意见”,因此偏离主题。尝试以一种可能的最佳答案并且可以客观地判断的方式重新表述它。
-
要问自己一个问题是为什么
Method是B的一部分而不是A的成员。 -
@BoPersson:他们的职责并不相同或密切相关。
标签: c++ oop refactoring