重複ゲッター、定数ゲッター、および非定数ゲッターの適切な処理
プログラマーとして、私たちは const ゲッターと非定数ゲッターの両方を持つという問題によく遭遇します。クラス内の getter メソッドの -const バージョン。これらを個別に実装するとコードの重複が発生する可能性がありますが、この難問に対する洗練された解決策を見つけるのは困難な場合があります。
課題
提供された例では、Foobar クラスに必要なクラスが必要です。 2 つの getSomething() メソッド: 1 つは非 const (Something& getSomething(int Index)) で、もう 1 つは const (const Something& getSomething(int)インデックス) 定数)。ただし、これらのメソッドを他のメソッドとともに実装しようとすると、必然的にコンパイラ エラーが発生します。 const バージョンから非 const バージョンをキャストすることも必要悪です。
エレガントなソリューション
完全に純粋なソリューションは実現可能ではないかもしれませんが、最も一般的には推奨されるアプローチは、他の関数から const をキャストすることです。見た目にはあまり美しくありませんが、呼び出し元のメンバー関数が非 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()); } };
この例では、get() の非 const バージョンが const バージョンから const をキャストして、オブジェクト自体を変更します。
以上が重複する const および非 const ゲッター メソッドを適切に処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。