C++ 获取私人成员的引用-为什么?

C++ 获取私人成员的引用-为什么?,c++,reference,private,C++,Reference,Private,在我从事的项目(外部资源)中,我遇到了一个类 class SignalGroup { public: SignalGroup() : amber_(2) , minRed_(0) , minGreen_(0) , ... {} unsigned int GetAmber() { return amber_; } unsigned int GetMinRed() { return minRed_; } unsigned int Get

在我从事的项目(外部资源)中,我遇到了一个类

class SignalGroup
{
public:
  SignalGroup() 
  : amber_(2)
  , minRed_(0)
  , minGreen_(0)
  , ...
  {}

  unsigned int GetAmber() {
    return amber_;
  }
  unsigned int GetMinRed() {
    return minRed_;
  }
  unsigned int GetMinGreen() {
    return minGreen_;
  }

  ...

  unsigned int & Amber() {
    return amber_;
  }
  unsigned int & MinRed() {
    return minRed_;
  }
  unsigned int & MinGreen() {
    return minGreen_;
  }
  ...



private:
  unsigned int amber_;
  unsigned int minRed_;
  unsigned int minGreen_;
  ...
};
该类与
CDialog::DoDataExchange()
结合使用,引用getter用于与对话框中的字段交换数据。(
DDX\u Text(pDX、IDC\u txtanber、sg->Amber());
)值获取程序(非引用)在其他任何地方都使用


我不明白这种方法有什么意义,或者它缺少了一些东西(getters private,CDialog override类是SignalGroup的朋友),或者作者只是犯了个错误,正如在对a?

的回答中所提到的,相关问题很好地总结了这些问题,为班级成员提供了参考。它是有效的C++代码,所以如果你想用这种方式设计它,那就取决于你。一般来说,吸气剂和设定器是反模式。类的工作方式确实没有理由不将其全部公开,因为您在getters中不做任何操作。@NathanOliver:因为除了对话框之外,任何人都不允许修改值,所以我正在考虑将值getters保留在其中,去掉引用getters,并使DataExchange类成为朋友。这样,封装在两个紧密绑定的对象之外的任何地方都会保留。。。划掉前面的评论。全班同学都被解雇了,反正我也不需要,我只是想弄明白这里做了什么。听起来不错。我只是想提醒你一下。