类 A
拥有类 C
的实例 c
。另一个类 B
必须通过 C::setBlah();
方法修改 c
。
在 A
中创建访问器 C getC();
然后使用 A.getC().setBlah()
不好吗?
或者我应该创建一个方法 A::setBlah();
来调用 C::setBlah();
吗?如果有几种这样的方法,是不是很烦人?
最佳答案
与大多数“做 X 不好吗?”一样问题,答案是它完全取决于给定的情况。
有时使用 getC()
类函数可能是一个非常糟糕的主意,因为它会破坏封装。其他时候它可能完全没问题,因为对该细节的封装可能无关紧要,并且编写大量包装函数会增加您必须编写的代码量。
选择最适合给定情况的那个。在我编写的代码中,我采用了这两种方法。
如果您确实选择了 getC()
路线,请务必返回一个引用;否则你将修改一个听起来不像你想要的拷贝。或者,您可以考虑将 A::c
公开,这样您就根本不需要函数。
要考虑的第三个选项是从 C
继承,这样就不需要 getC()
或 A
中的包装函数。
关于c++ - 访问放在类中的对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841752/