Witam wszystkich na forum. Pisząc program w C++ natknąłem się z problemem, którego nie potrafię obejść.
Przykładowy kod:
//plik.h
class A {
public:
A();
void (*callback)() = NULL;
};
class B : public A {
public:
B();
void b_onCallback();
};
//plik.cpp
A::A() { }
B::B() : A() {
A::callback = &b_onCallback; // Przypisanie funkcji obiektu B nie działa
}
void B::b_onCallback() { }
Generalnie chodzi oto, że potrzebuję wywołać funkcję callback z funkcją globalną i w klasie pochodnej dziedziczonej po klasie A.
Przypisanie funkcji globalnej do callback działa poprawnie.
A objA = A();
objA.callback = &objA_onCallback; // Przypisanie funkcji globalnej działa
void objA_onCallback() { }
W przypadku klasy B dziedziczonej po klasie A zwraca mi błąd:
Error: cannot convert 'void (B::)()' to 'void ()()' in assignment A::callback = &b_onCallback;
Rozumiem skąd jest ten błąd, ale nie wiem jak go rozwiązać.