Zwracanie wskaźnika na funkcję przez funkcję

0

Witam.
Dlaczego poniższy kod przy próbie kompilacji zwraca poniższe błędy?

class Person : public IDrawable{
    typedef bool (*Compare_Function) (Person &, Person &);
    bool Compare_By_Name(Person &First, Person &Second){

        ...

    }

public:

    static Compare_Function Get_Compare_Function(int Sort){

        ...

        return Compare_By_Name;

    }

Błąd 3 error C2440: "return" : nie można konwertować z "bool (__thiscall Person::* )(Person &,Person &)" na "Person::Compare_Function"
Błąd 2 error C3867: "Person::Compare_By_Name": w wywołaniu funkcji brakuje listy argumentów; użyj "&Person::Compare_By_Name", aby utworzyć wskaźnik do elementu członkowskiego

3

Bo typy się nie zgadzają. Istnieje różnica między

bool (*)(Person&, Person&)

a

bool (Person::*)(Person&, Person&)

Compare_Function to wskaźnik na zwykłą funkcję, nie metodę klasy Person.

typedef bool (Person::*Compare_Function)(Person&, Person&);
....
static Compare_Function Get_Compare_Function(int Sort){
    return &Person::Compare_By_Name;
}
0

Dziękuję za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0