Funktionszeiger / Methodenzeiger



  • Hallo,
    ich habe mal wieder ein kleines Problemchen.
    Diesmal handelt es sich um einen Funktionszeiger bzw. Methodenzeiger. Ich komme leider mit dem Aufruf nicht klar. Hier erstmal die relevanten CodeTeile:
    cBot.h

    class cBot
    {
    public:
        Action (cBot::*getAct)();
        Action getActSampleBot();
    }
    

    cBot.cpp

    cBot::cBot()
    {
        getAct = &cBot::getActSampleBot;
    }
    ...
    Action cBot::getActSampleBot()
    {
        ...
    }
    

    cPoker.cpp

    vector<cBot> Players;
    ...
    Action Act;
    Act = (Players[0].*getAct)();
    

    Wo liegt der Fehler beim Aufruf? Bin echt am verzweifeln .. vielen Dank schonmal für die Hilfe!

    Grüße CsT


  • Mod

    Ja die Methodenzeiger - lästige Biester:

    Act = (Players[0].*Players[0].getAct)();
    

    (weniger minimalistische Klammerung ist zu empfehlen).
    Das erste Players[0] betsimmt nur den Objektparameter der Methode, damit weiß der Compiler aber noch nicht, wo das getAct herkommt.



  • Vielen Dank! Klappt wunderbar .. jetzt kann ich schön weiterprogrammieren, alles ist jetzt so wie es sein sollte 😉

    Viele Grüße
    CsT


Anmelden zum Antworten