In project I'm working on (external sources) I've encountered a class...
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_;
...
};
The class is used in conjunction with CDialog::DoDataExchange()
and the reference getters are used to exchange data with fields in a dialog box. ( DDX_Text(pDX, IDC_TXTAMBER, sg->Amber());
) The value getters (not reference) are used everywhere else.
Does this approach make some sense I don't understand, or is it missing something to be what it should be (getters private, the CDialog override class being a friend of SignalGroup) or did the author simply commit a faux pas, as mentioned in the answer to a related question?