Witam!
Poniżej najkrótszy możliwy kod prezentujący moją zagwozdkę:
int funkcja_globalna( void (*pfnWskaznik)(int, int*) ) { /// funkcja przyjmująca wskaźnik do funkcji
return 1;
}
class Klasa {
public:
/* static */ void funkcja( int, int* ) { return; } /// gdy ta funkcja nie jest statyczna...
public: Klasa();
};
Klasa::Klasa() {
funkcja_globalna(funkcja); /// ...w tym miejscu kompilator zgłasza błąd
}
int main()
{
return 0;
}
Błąd kompilatora:
argument of type 'void (Klasa::)(int, int*)' does not match 'void ()(int, int)'
Oczywiście - jeśli funkcja której wskaźnik sobie podajemy jest statyczna - wszystko śmiga.
Doszedłem do tego metodą prób i błędów i teraz chciałem się dowiedzieć...
Dlaczego tak się dzieje? :)