gpt4 book ai didi

c++ - 封装:我应该将一个对象的数据传递给另一个修改它的类吗?

转载 作者:行者123 更新时间:2023-11-28 02:09:45 26 4
gpt4 key购买 nike

我想要类似下面的代码:

class Foo{

public:

void update() {
for( auto dataModifier : _dataModifierList ) {
dataModifier.modify( Data& _data );
}
};

private:
Data _data;
std::vector<DataModifier> _dataModifierList;

};

因为我正在将 Foo 的数据发送到另一个修改它的类,这是否被认为是不良封装?感觉就像我将 Foo 的内容暴露给 DataModifier

我这样做的原因是因为我想为每个 Foo 实例注册一些 DataModifier

最佳答案

如果 DataModifier 获得对 Data 对象的引用以就地修改它,那么从封装的角度来看它是完美的。如果您将 DataModifier Foo 设为友元,这样它就可以随时更改其成员,而无需调用 Foo 的任何方法,这将是一个缺陷。如果您决定将对私有(private) data_ 的引用存储在 Foo 之外的某处,而不是将其传递给 DataModifier,我也会认为这是糟糕的设计。

关于c++ - 封装:我应该将一个对象的数据传递给另一个修改它的类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com