getter メソッドを使用することは、将来的に getter メソッドをより複雑なものに置き換えることができるため、有効期間の長いクラスではより適切な設計選択です。これが const 値に必要になる可能性は低いと思われますが、コストは低く、考えられる利点は大きくなります。
余談ですが、C++ では、メンバーの getter と setter の両方に同じ名前を付けることをお勧めします。これは、将来、メソッドのペアを実際に変更できるためです。
class Foo {
public:
std::string const& name() const; // Getter
void name(std::string const& newName); // Setter
...
};
operator()()
for eachを定義する単一のパブリック メンバー変数に:
// This class encapsulates a fancier type of name
class fancy_name {
public:
// Getter
std::string const& operator()() const {
return _compute_fancy_name(); // Does some internal work
}
// Setter
void operator()(std::string const& newName) {
_set_fancy_name(newName); // Does some internal work
}
...
};
class Foo {
public:
fancy_name name;
...
};
もちろん、クライアント コードを再コンパイルする必要がありますが、構文を変更する必要はありません。明らかに、この変換は、getter のみが必要な const 値に対しても同様に機能します。