メンバ関数の定数バージョンを強制的に呼び出す方法が必要です。私はできるだけ効率的にしようとしています。良い解決策はありますか?定数バージョンメンバ関数への呼び出しを強制する
EDIT:一般的な機能を探して
メンバ関数の定数バージョンを強制的に呼び出す方法が必要です。私はできるだけ効率的にしようとしています。良い解決策はありますか?定数バージョンメンバ関数への呼び出しを強制する
EDIT:一般的な機能を探して
const型、またはconst型への参照を参照します。
あなたは気の利いた方法でそれをすることができますが、その日の終わりには、それが唯一の方法です。
実際に私はこれの目的が何であるかわかりませんが、努力する価値がないようです。
また、私はジェネリック関数の意味を理解していません。それはいくつかの明確化が必要ですが、私が正しく理解している場合は、ポインタ/値/参照をとり、それを関数に渡して、魔法のようにconstメソッドを呼びたいのですか?これは、多型または少なくとも同じ名前のメソッド(テンプレート)を使用できる場合にのみ機能します。
それは自動的にパラメータが渡されによってその上のconstまたは非constバージョンを呼び出します。あなたはconstから非constへのキャストしかできません。それはばかげているかもしれませんが、それは世界の道です。
たとえば、あなたは通常、この操作を行うことができます:
はvoid function(char foo);
void function(int foo);
function(4);
コンパイラが呼び出しするかを「あなたのための決定」になる
は、あなたがそれを明示的に行うことができますがあり
int x;
function((int)x);
function((char)x);
を行うことによって、オーバーロードされたconstバージョンを明示的に渡すための同等物はありません。
もちろん、はconstバージョンとしてを定義するだけで、パラメータは単にconstとして渡されます。
const型への参照、またはconst型への参照を作成します。 – Corbin
一般的な関数を作成する場合は、キャスティングを避けることはできますか? – dchhetri
なぜあなたはconstバージョンをとにかく呼んでいますか?私はconstメソッドの非constバージョンが基本的に同じであると期待しているので、これがどれだけパフォーマンスを向上させるかは本当にわかりません。 – Corbin