-1

我已将对类变量的访问权限从公共更改为私有,

然后创建 getter & setter(100 个变量)

一段时间后,完成之后,

我怎样才能自动化,直接访问这些变量中的任何一个来设置/获取,而无需遍历这 100 个变量中的每一个。有时,在整个大型项目中几乎可以在任何地方访问变量,因此手动操作有点困难。

我正在使用 Eclipse IDE,C++ 项目

4

1 回答 1

3

如果您的项目非常大并且您正在将私有成员控制改装到其中,您可能会发现采用另一种方法会有所帮助:根本不实现 getter.... 只需实现 setter。为每个底层私有成员变量定义一个const公共引用,作为它的“getter”。任何读取此数据的代码都可以保持不变;您只需要更新设置这些变量的代码,这可能会减少更新的痛苦。如果你走这条路,你必须在构造函数中初始化这些公共引用,像这样:

class fred {
public:
    fred() : stone(_stone) {} // every constructor must initialize all public references like this
    void set_stone(int s) { _stone = s; }
    int get_stone() { return _stone; } // Instead of this (or, in ADDITION to this), do this....
    const int& stone; // const public reference to internal private data member
private:
    int _stone;
}

您可以永久使用该解决方案,或者仅在您(“有一天”)完成更新所有吸气剂之前。对于内部数据的数据类型非常明显且不会改变的类,我个人更喜欢这种解决方案,因为用它编写的代码更容易阅读。我希望C++ 有一个operator classmember_setter<membername>()特性,可以让你编写一个 setter 方法,看起来就像你只是在访问一个数据成员,而不是在它上面调用一个方法;这将产生比使用 ​​setter 方法获得的更简洁的代码。

于 2013-09-23T18:58:09.040 回答