Wie man die Adresse einer überladenen Funktion Mitglied?

Ich versuche einen Zeiger auf eine bestimmte version einer überlastet member-Funktion. Hier ist das Beispiel:

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
  }
};

Die Fehlermeldung "error C2440: 'initializing' : cannot convert from 'overloaded-function' zu 'MemberFunctionType'"

Dies funktioniert, wenn f ist nicht überladen, aber nicht in dem obigen Beispiel. Jede Anregung?

BEARBEITEN

Vorsicht, der obige code hat nicht unbedingt mein real-Welt-problem, was war, dass ich vergessen hatte, ein "const" - das ist, was die akzeptierten Antworten Punkte aus. Ich überlasse die Frage, wie es ist, obwohl, weil ich denke, das problem könnte passieren anderen.

  • habe einen schnellen test und alles kompiliert. code sieht OK aus - wenn dies dein original code natürlich 😀 haben Sie auch die const-ness genau ist?
  • Welche version von MSVC verwenden Sie. Es funktioniert gut im Jahr 2008.
  • natürlich. ich werde viel Freude :p
  • Warum nicht Bearbeiten, die Frage zu reflektieren, die wichtige Informationen über const? Ohne dass im mix, die Frage macht keinen Sinn und ist unübersichtlich. Und litb Antwort ist verwirrend, da es macht es scheinen, wie der const ist erforderlich, damit dieses überhaupt funktioniert, wo, wenn es in der linken völlig außer acht, kein problem.
  • hmm Recht. ich passe meine Antwort um zu zeigen, was Los war
  • Die Antwort auf die aktualisierte Frage (f ohne const) beschrieben wird, hier.

Schreibe einen Kommentar