C ++: Aufruf der Member-Funktion über einen Zeiger

Ich habe diesen Beispielcode für die Verwendung des Zeigers auf die Elementfunktion, den ich zur Laufzeit ändern möchte, aber ich kann ihn nicht zum Laufen bringen. Ich habe es schon versuchtthis->*_currentPtr(4,5) (*this)._currentPtr(4, 5). Was ist die richtige Methode, um einen Zeiger auf eine Methode innerhalb derselben Klasse aufzurufen?

Der Fehler :Ausdruck muss den Funktionstyp (Zeiger auf) haben

#include <iostream>
#include <cstdlib>

class A {

public:

    void setPtr(int v);
    void useFoo();

private:
    typedef int (A::*fooPtr)(int a, int b);

    fooPtr _currentPtr;

    int foo1(int a, int b);
    int foo2(int a, int b);
};

void A::setPtr(int v){
    if(v == 1){
        _currentPtr = foo1;
    } else {
        _currentPtr = foo2;
    }
}

void A::useFoo(){

    //std::cout << this->*_currentPtr(4,5); // ERROR
}

int A::foo1(int a, int b){
    return a - b;
}

int A::foo2(int a, int b){
    return a + b;
}

int main(){

    A obj;

    obj.setPtr(1);
    obj.useFoo();

    return 0;
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage