Als «function-pointers» getaggte Fragen

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.


8
C ++ Lambda mit Captures als Funktionszeiger
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) …

7
Funktionszeiger auf Elementfunktion
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() { …


7
Casting eines Funktionszeigers auf einen anderen Typ
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, …

12
Wie kann ich eine Klassenmitgliedsfunktion als Rückruf übergeben?
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': …

8
Python-Funktionszeiger
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?

8
Komplexe C-Deklaration
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?

4
Was bedeutet ((void (*) ()) buf) (); bedeuten?
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



1
Schlechter Typabzug beim Übergeben eines überladenen Funktionszeigers und seiner Argumente
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, …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.