Jak uzyskać wskaźnik funkcji dla funkcji składowej klasy, a następnie wywołać tę funkcję składową z określonym obiektem? Chciałbym napisać: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &Dog::bark; (*pBark) (pDog); … Ponadto, jeśli to możliwe, chciałbym również …
Bawiłem się lambdami C ++ i ich niejawną konwersją na wskaźniki funkcji. Moim początkowym przykładem było użycie ich jako wywołania zwrotnego dla funkcji ftw. Działa to zgodnie z oczekiwaniami. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int …
Powiedzmy, że mam funkcję, która akceptuje void (*)(void*)wskaźnik funkcji do użycia jako wywołanie zwrotne: void do_stuff(void (*callback_fp)(void*), void* callback_arg); Teraz, jeśli mam taką funkcję: void my_callback_function(struct my_struct* arg); Czy mogę to zrobić bezpiecznie? do_stuff((void (*)(void*)) &my_callback_function, NULL); Przyjrzałem się temu pytaniu i przyjrzałem się niektórym standardom C, które mówią, że …
Chciałbym ustawić wskaźnik funkcji jako element członkowski klasy, który jest wskaźnikiem do innej funkcji w tej samej klasie. Powody, dla których to robię, są skomplikowane. W tym przykładzie chciałbym, aby wynik miał wartość „1” class A { public: int f(); int (*x)(); } int A::f() { return 1; } int …
Nie mogę tego rozgryźć: int main() { int (*) (int *) = 5; return 0; } Powyższe przypisanie kompiluje się z g ++ c ++ 11. Wiem, że int (*) (int *)jest to wskaźnik do funkcji, która przyjmuje (int *)argument jako argument i zwraca wartość int, ale nie rozumiem, jak …
Rozwiązuję binarne wyzwanie dotyczące eksploatacji na picoCTF i natrafiłem na następujący fragment kodu: ((void (*)())buf)(); gdzie bufjest tablica znaków. Rozwiązałem wyzwanie, ale nie rozumiem, co dokładnie robi. Spojrzałem na ten wątek, ale nie mogłem go zrozumieć. Co ((void (*)())buf)();znaczy
Jestem zdezorientowany co do znaczenia void *function(). Czy to wskaźnik do funkcji, czy funkcja powraca void*? Zawsze używałem go w strukturach danych jako funkcji rekurencyjnej zwracającej wskaźnik, ale kiedy zobaczyłem kod w wielowątkowości ( pthread), jest taka sama deklaracja funkcji. Teraz jestem zdezorientowany, jaka jest między nimi różnica.
Znalazłem ten fragment kodu na GitHub, ale nie do końca go zrozumiałem: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) Następnie: int (*max)(int, int) = lambda(int, (int x, int y) { return x > y ? x : y; }); int max_value = max(1, 2); // max_value is 2 …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.