Ein Funktionszeiger ist ein Zeiger auf eine Funktion, die in einer Variablen gespeichert werden kann. Es ermöglicht eine Laufzeitauswahl, welche Funktion ausgeführt werden soll.
Wie erhalte ich einen Funktionszeiger für eine Klassenelementfunktion und rufe diese Elementfunktion später mit einem bestimmten Objekt auf? Ich würde gerne schreiben: class Dog : Animal { Dog (); void bark (); } … Dog* pDog = new Dog (); BarkFunction pBark = &Dog::bark; (*pBark) (pDog); … Wenn möglich, möchte …
Ich habe mit C ++ Lambdas und deren impliziter Konvertierung in Funktionszeiger gespielt. Mein Startbeispiel war, sie als Rückruf für die ftw-Funktion zu verwenden. Dies funktioniert wie erwartet. #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) …
Ich möchte einen Funktionszeiger als Mitglied einer Klasse einrichten, die ein Zeiger auf eine andere Funktion in derselben Klasse ist. Die Gründe, warum ich das mache, sind kompliziert. In diesem Beispiel möchte ich, dass die Ausgabe "1" ist. class A { public: int f(); int (*x)(); } int A::f() { …
Ich kann das nicht herausfinden: int main() { int (*) (int *) = 5; return 0; } Die obige Zuordnung wird mit g ++ c ++ 11 kompiliert. Ich weiß, dass dies int (*) (int *)ein Zeiger auf eine Funktion ist, die ein (int *)Argument als akzeptiert und ein int …
Angenommen, ich habe eine Funktion, die einen void (*)(void*)Funktionszeiger zur Verwendung als Rückruf akzeptiert : void do_stuff(void (*callback_fp)(void*), void* callback_arg); Nun, wenn ich eine Funktion wie diese habe: void my_callback_function(struct my_struct* arg); Kann ich das sicher machen? do_stuff((void (*)(void*)) &my_callback_function, NULL); Ich habe mir diese Frage und einige C-Standards angesehen, …
Ich verwende eine API, bei der ich einen Funktionszeiger als Rückruf übergeben muss. Ich versuche, diese API aus meiner Klasse zu verwenden, erhalte jedoch Kompilierungsfehler. Folgendes habe ich von meinem Konstruktor gemacht: m_cRedundencyManager->Init(this->RedundencyManagerCallBack); Dies wird nicht kompiliert - ich erhalte die folgende Fehlermeldung: Fehler 8 Fehler C3867: 'CLoggersInfra :: RedundencyManagerCallBack': …
Ich habe einen Funktionsnamen in einer Variablen wie dieser gespeichert: myvar = 'mypackage.mymodule.myfunction' und ich möchte jetzt meine Funktion so nennen myvar(parameter1, parameter2) Was ist der einfachste Weg, um dies zu erreichen?
Ich habe gerade einen Code im Internet durchgesehen und Folgendes gefunden: float * (*(*foo())[SIZE][SIZE])() Wie lese ich diese Erklärung? Gibt es bestimmte Regeln zum Lesen derart komplexer Erklärungen?
Ich löse eine binäre Exploitation-Herausforderung auf picoCTF und bin auf diesen Code gestoßen: ((void (*)())buf)(); Wo bufist ein Zeichenarray? Ich habe die Herausforderung gelöst, kann aber nicht verstehen, was genau es tut. Ich habe mir diesen Thread angesehen, konnte ihn aber nicht erkennen. Was heißt ((void (*)())buf)();das
Ich bin verwirrt über die Bedeutung von void *function(). Ist es ein Zeiger auf eine Funktion oder eine Funktion, die zurückkehrt void*? Ich habe es immer für Datenstrukturen als rekursive Funktion verwendet, die einen Zeiger zurückgibt, aber als ich einen Code in multithreading ( pthread) sah, gab es dieselbe Funktionsdeklaration. …
Ich habe diesen Code auf GitHub gefunden, ihn aber nicht ganz verstanden: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) Dann: 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 …
Ich versuche, einen Wrapper bereitzustellen, um std::invokeden Funktionstyp auch dann abzuleiten, wenn die Funktion überlastet ist. (Ich habe gestern eine verwandte Frage für die Variadic- und Methodenzeigerversion gestellt). Wenn die Funktion ein Argument hat, funktioniert dieser Code (C ++ 17) unter normalen Überlastbedingungen wie erwartet: #include <functional> template <typename ReturnType, …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.