重複する Getter に優雅に対処する
重複変数、const 変数、および非 const 変数に対する冗長な getter メソッドに遭遇するとイライラすることがあります。次の例を考えてみましょう。
class Foobar { public: Something& getSomething(int index); const Something& getSomething(int index) const; };
const メソッドから非 const バージョンを呼び出すことができないため、どちらかのメソッドを他方とともに実装することは不可能です。非 const バージョンから const バージョンを呼び出すにはキャストが必要です。
実用的な解決策
完璧な解決策はありませんが、実用的なアプローチの 1 つは実装することです。 const バージョンから const をキャストして、非 const バージョンを作成します。この方法は単純であるにもかかわらず、安全性を確保します。呼び出し元のメンバー関数が非定数であるため、オブジェクトも非定数であるため、キャストを実行できます。
class Foo { public: const int& get() const { // Non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } private: int foo; };
このアプローチを利用することで、重複した getter メソッドの必要性を排除し、維持することができます。コードの安全性を確保します。
以上がC で重複するゲッターをエレガントに処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。