Ĺadny brzuch
Jak przekazać funkcję do funkcji ? Powiedzmy że mam funkcję:
int dodaj(int a, int B) { return a + b;}
Wskaźnik na taką funkcję wygląda tak:
int (*wks)(int a, int B);
Ale jeżeli chcę zadeklarować funkcję która będzie pobierać wskaźnik do takiej funkcji to takie coś:
void wywolajFunkcje(int (*wks)(int a, int B), int dodatkowyParametr) { wsk(0, 0); // Inne instrukcje ... }
niestety nie działa :/
Jak przekazać funkcję do funkcji ? Powiedzmy że mam funkcję:
int dodaj(int a, int B) { return a + b;}
Wskaźnik na taką funkcję wygląda tak:
int (*wks)(int a, int B);
Ale jeżeli chcę zadeklarować funkcję która będzie pobierać wskaźnik do takiej funkcji to takie coś:
void wywolajFunkcje(int (*wks)(int a, int B), int dodatkowyParametr) { wsk(0, 0); // Inne instrukcje ... }
niestety nie działa :/
Mi to skompilowało się pod Visual Studio:
#include <iostream> using namespace std; int dodaj(int aa, int bb) { return aa + bb;} void wywolajFunkcje(int (*wsk)(int, int), int aa, int bb) { cout << wsk(aa, bb); } int main(int argc, char *argv[]) { int (*wsk)(int aa, int bb) = dodaj; wywolajFunkcje(wsk, 1, 2); cin.get(); return 0; }
Ale proponuję ci poczytać o funktorach (czy obiektach funkcyjnych, różnie to zwą). Są wygodniejsze, mają większe możliwości, są zgodne z duchem C++ i są wspierane przez STL :)
Użytkownik eugeniusz edytował ten post 20 marzec 2010, 19:33
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
int dodaj(int a, int B) { return a + b;}
Wskaźnik na taką funkcję wygląda tak:
int (*wks)(int a, int B);
Ale jeżeli chcę zadeklarować funkcję która będzie pobierać wskaźnik do takiej funkcji to takie coś:
void wywolajFunkcje(int (*wks)(int a, int B), int dodatkowyParametr) { wsk(0, 0); // Inne instrukcje ... }
niestety nie działa :/
Jak przekazać funkcję do funkcji ? Powiedzmy że mam funkcję:
int dodaj(int a, int B) { return a + b;}
Wskaźnik na taką funkcję wygląda tak:
int (*wks)(int a, int B);
Ale jeżeli chcę zadeklarować funkcję która będzie pobierać wskaźnik do takiej funkcji to takie coś:
void wywolajFunkcje(int (*wks)(int a, int B), int dodatkowyParametr) { wsk(0, 0); // Inne instrukcje ... }
niestety nie działa :/
Mi to skompilowało się pod Visual Studio:
#include <iostream> using namespace std; int dodaj(int aa, int bb) { return aa + bb;} void wywolajFunkcje(int (*wsk)(int, int), int aa, int bb) { cout << wsk(aa, bb); } int main(int argc, char *argv[]) { int (*wsk)(int aa, int bb) = dodaj; wywolajFunkcje(wsk, 1, 2); cin.get(); return 0; }
Ale proponuję ci poczytać o funktorach (czy obiektach funkcyjnych, różnie to zwą). Są wygodniejsze, mają większe możliwości, są zgodne z duchem C++ i są wspierane przez STL :)
Użytkownik eugeniusz edytował ten post 20 marzec 2010, 19:33