freeGlut | Callback und Funktionen



  • Hallo,
    heute habe ich einen weitere Frage zum Thema freeGlut, speziell zu den Callbacks. Unzwar ich habe z.B. eine Funktion :

    Void keyboard(unsigned char key, int x, int y)
    

    diese Funktion befindet sich in Datei A, jetzt muss ich diese Funktion ja zu der Init() in Datei B bringen (Ich hoffe Callback ist dafür das richtige Wort), wo ich die Funktion mit : "glutKeyboardFunc()" regrestriere. Jedoch kommt jetzt meine Frage, wie schaffe ich es das die Funktion in Datei B erkannt wird, ich habe es schon versucht ein Objekt zu erstellen, jedoch bekomme ich den Fehler :"Ein Zeiger auf eine gebundene Funktion darf nur zum Aufruf der Funktion verwendet werden". Ich hoffe ihr versteht mein Problem.

    Mfg



  • In Datei B:

    void keyboard(unsigned char key, int x, int y); // Prototypdeklaration
    
    ...
    
    glutKeyboardFunc(keyboard);
    


  • So erstelle ich doch nur in Datei B eine neue Funktion die den selben Namen, wie die Funktion in Datei A trägt, diese beiden Funktionen haben dann doch nichts miteinander zutun, oder ?



  • Phaser schrieb:

    So erstelle ich doch nur in Datei B eine neue Funktion die den selben Namen, wie die Funktion in Datei A trägt, diese beiden Funktionen haben dann doch nichts miteinander zutun, oder ?

    Nein, eine Prototypdeklaration teilt dem Compiler nur mit, dass es irgendwo in einer .cpp/.c Datei eine Funktion mit dem entsprechenden Prototypen gibt.

    Wenn beim Buildvorgang diese Funktion nirgendwo gefunden wurde, gibt dir der Linker eine Ohrfeige.



  • Ahh, hat funktioniert. Vielen dank, wieder etwas nützliches dazu gelernt 😃



  • Üblicherweise schreibt man dann den Prototyp in eine Header-Datei, damit man das nicht in jede Datei kopieren muss, die die Funktion benutzt. Bei Änderungen muss man das dann nur noch an einer zentralen Stelle anpassen.


Anmelden zum Antworten