c++ - C++ constオーバーロードとコード共有

原文 c++ const overloading

メンバーメソッドfとgを持つクラスがあり、どちらもconstによってオーバーロードされています。がある
f()内のg()の呼び出し。 fとconst fのメソッド本体は同じです。

class X {
 void f() {/body ... g() /} const;
 void f() {/body g() /};

 void g() const;
 void g();
};


f()とg()は同じメソッド本体を持っているので、私は本当に1つのメソッドを持ちたいのですが、
fとconst fの間でコピーされた重複コードではなく。

さらに、f()の本体がconstオブジェクトに対して実行されるとき、明らかなconst g()が欲しい
実行されます(非constオブジェクトの場合は非const g())。
答え
これがテンプレートメンバー関数で実行できるとは思いません(しかし、私は簡単に間違っている可能性があります)。したがって、最良のオプションは、共有コードを別のメソッドに分解することです。

class X {
    void g() const;
    void g();

    void body() const { ... }

    void f() const { body(); g(); }
    void f() { body(); g(); }
}; 
関連記事

c++ - OpenGL 2.1でのglDrawRangeElementsの使用

c++ - POSIX読み取りの一時停止をマイクロ秒の範囲で認識する

c++ - Qtで、モデルからリストビューのアイテムの背景色をリセットするにはどうすればよいですか?

c++ - 実装ファイルでコンストラクタを使用するにはどうすればよいですか?

c++ - cursesライブラリーの使用時にmove()またはwmove()を使用するとカーソルが移動しない

c++ - プログラムでシステム情報を開く

c++ - Boost::Spiritを使用してエスケープされた文字列を解析する

java - 乱数をテストする[終了]

c++ - Qt CreatorとGCC

c++ - DLLが機能しない