Próbuję przekazać funkcję do innej funkcji jako parametru, a obydwie funkcje są członkami tej samej klasy.C++: Używanie wskaźników funkcji z funkcjami składowymi
Dostaję dziwny błąd i nie mogę się dowiedzieć, jaki jest problem.
Oto moje funkcje:
void myClass::functionToPass()
{
// does something
}
void myClass::function1(void (*passedFunction)())
{
(*passedFunction)();
}
void myClass::function2()
{
function1(&myClass::functionToPass);
}
Jednak ja otrzymuję następujący błąd:
cannot convert parameter 1 from 'void(__thiscall myClass::*) (void)'
to 'void(__cdecl*)(void)'
Więc co daje? Czuję, że próbowałem każdej odmiany, aby spróbować to zrobić. Czy potrafisz nawet przekazywać wskaźniki funkcji dla funkcji składowych? Jak mogę to uruchomić?
Uwaga: Tworzenie funkcji staticToPass nie jest tak naprawdę poprawną opcją.
Ten komunikat o błędzie zawiera wszystkie informacje niezbędne do rozwiązania problemu. –
Użycie 'boost :: function' może być łatwiejsze niż użycie wskaźników funkcji. Musiałbyś sprawdzić, czy to powinno być 'boost :: function' (w takim przypadku 'function2' powiąże' this') lub 'boost :: function ' (w takim przypadku 'function1' powinien przekazać '* this') –
MSalters