【发布时间】:2018-07-01 00:42:49
【问题描述】:
实现以下场景的最佳做法是什么:Class A 持有类型为 B 的成员对象。
class A
{
private:
B b;
};
class B
{
private:
int x;
};
将A 类型的对象作为const & 参数的打印函数应该打印a 和b 的成员:
void Print(const A& a)
{
cout << a.b.x;
}
读取函数应设置a(和b)及其成员的值:
void Read(A& a)
{
// ...
a.b.x = 2;
}
class A 的成员访问权限应该如何实现?
- “
b”应该公开吗? - “
class A”是否应该为 b 提供 2 个 getter(1 个用于写入,1 个用于对“b”的读取)?
其他信息:
在我的真实系统中,A 和 B 类要大得多,它们是一个巨大的遗留系统的一部分。在这个遗留系统中,Print 和 Read 是“视图模型”的成员函数,其中 Print 将值写入 GUI,Read 从 GUI 读取值并设置 A 的成员和B。所以A 和B 的职责是保存数据(某种数据模型)。
【问题讨论】:
-
为什么不把读写的责任转移到
B,或者在这种情况下Print和Read的另一个重载?不过,您需要将这些函数设为成员或friend。 -
我特别喜欢
Read函数的实际写入方式。让他们猜测并保持警惕。
标签: c++ reference parameter-passing constants