c++ - 访问放在类中的对象的方法

标签 c++ class attributes

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/

相关文章:

c++ - C++ 中是否自动声明内部函数?

javascript - 在 <head> 中(在函数/类中)使用 jquery append()

.net - 枚举的 Vb.net 自定义属性

c++ - 是否有支持 g++ 或 clang 内存驻留编译的实用程序?

c++ - C/C++ 服务器不发送最后几行文件

C++:方法重复;需要 DRY 优化

python - 在不调用 __init__ 的情况下动态创建 type(self) 的实例?

C++ 使用 qsort 对类数组进行排序

gcc - gcc的跨平台版本忽略了我函数的属性标签__attribute__((interrupt))

ios - 保留格式属性时NSAttributedString字体更改