Hier ist ein Code-Snippet.Void Pointer und Casting in Funktion Argument
class NetworkRequestChannel {
public:
...
NetworkRequestChannel(const unsigned short _port_number,
void * (*connection_handler) (int *));
...
private:
...
}
Meine Frage ist über das Argument void * (*connection_handler) (int *)
. Ich habe eine vage Idee, wie man das liest, und es ist wie ein void-Zeiger auf ein Objekt mit dem Namen connection_handler
, das dann in einen int-Zeiger umgewandelt wird. Aber ich weiß, das ist mit ziemlicher Sicherheit falsch, und ich bin mir nicht sicher, wie ich es sonst interpretieren soll.
Es ist ein Funktionszeiger, der eine Funktion akzeptiert, die ein einzelnes 'int *' als Argument akzeptiert und einen 'void *' - Wert (eine generische Speicheradresse) zurückgibt. Der Parameter selbst heißt 'connection_handler'. – mukunda
Beachten Sie, dass 'class NetworkRequestChannel' angibt, dass dies C++ und nicht C ist. Die Antwort ist die gleiche, aber der angezeigte Code ist nicht gültig. –
Das ist etwas anderes, worüber ich seit einiger Zeit verwirrt bin. Ich gebe zu, das ist für eine Klasse, weshalb ich versuchte, nicht zu viele Details zu setzen und nur die eine einfache Antwort zu bekommen. Bei allen Aufgaben meiner Professoren handelt es sich jedoch um C-Dateien mit '.C'- und' .H'-Erweiterungen. HE verwendet jedoch Klassen sogar in seinen eigenen vordefinierten Dateien, und das Makefile, das wir erhalten, verwendet 'g ++ -g'. Es ist wie ein C/C++ - Hybrid, den er versucht hat, den ich bis zu diesem Kurs nicht gesehen habe. – UnworthyToast