私はのオーバーロードされたメンバー関数の特定のバージョンへのポインタを取得しようとしています。ここでは例です:オーバーロードされたメンバー関数のアドレスを取得する方法は?
class C
{
bool f(int) { ... }
bool f(double) { ... }
bool example()
{
// I want to get the "double" version.
typedef bool (C::*MemberFunctionType)(double);
MemberFunctionType pointer = &C::f; // <- Visual C++ complains
}
};
エラーメッセージは「エラーC2440: 『初期化』: 『MemberFunctionType』に 『オーバーロードさ-関数』から変換できません」
f
が過負荷になっていない場合、これは動作します
ではなく、上記の例では、なにか提案を?
EDIT
用心、上記のコードは、私が「ポーラ」忘れていたということでした私の実世界の問題を反映していない - これが受け入れられた答えは指摘するものです。私は問題が他者に起こると思うので、私はそれをそのまま残します。
は簡単なテストを行い、すべてがコンパイルされます。コードが正常に見える - これがオリジナルのコードであれば:Dはまったく同様のconst-nessを持っていますか? –
使用しているMSVCのバージョン。それは2008年に正常に動作します。 – Eclipse
もちろん。私は大きな楽しみがあるでしょう:p –