Fehler bei Callback-Funktion (no matching function for call to ...)



  • Hallo,

    ich habe eine Klasse namens "Gui" und in dieser eine Methode für die GUI-Elemente. Die Buttons habe ich mittels Callback-Variante eingebunden. Nun möchte ich die dazugehörige Callback-Funktion aufrufen und da meckert er rum:

    Hier mal ein Ausschnitt, das Problem tritt bei allen Buttons auf an denen ich eine Callback-Funktion übergebe.

    class Gui {
      protected:
        void CB_button_about_close(Fl_Widget*, void*);
        void CB_button_about(Fl_Widget*, void*);
    
      public:
        Fl_Button *button_about_close;
    };
    
    void Gui::CB_button_about_close(Fl_Widget*, void*) {
      win_about->hide();
      delete(win_about);
    }
    
    // anderer Callback des Buttons "about"
    void Gui::CB_button_about(Fl_Widget*, void*) {
      ...
      button_about_close = new Fl_Button(0, 80, 400, 20, "close");
      button_about_close->box(FL_THIN_DOWN_BOX);
      button_about_close->callback(CB_button_about_close);
      ...
    }
    

    Ich beschäftige mich noch nicht allzu lange ernsthaft mit OOP, ich denke dort liegt dann auch der Fehler, hab ihn aber noch nicht gefunden und bin bald am verzweifeln.

    Der Compiler spuckt folgendes aus:

    In member function `void Gui::CB_button_about(Fl_Widget*, void*)':
    error: no matching function for call to `Fl_Button::callback(<unknown type>, Gui* const)'
    note: candidates are: void (* Fl_Widget::callback() const)(Fl_Widget*, void*)
    note:                 void Fl_Widget::callback(void (*)(Fl_Widget*, void*), void*)
    note:                 void Fl_Widget::callback(void (*)(Fl_Widget*, void*))
    note:                 void Fl_Widget::callback(void (*)(Fl_Widget*))
    note:                 void Fl_Widget::callback(void (*)(Fl_Widget*, long int), long int)
     === Build finished: 1 errors, 0 warnings ===
    

    verwende Code::Blocks ...

    Grüße,
    du ciel



  • Ein Callback auf eine Memberfunktion ist etwas komplizierter. http://www.newty.de/fpt/callback.html#member



  • danke, ... hab mirs durchgelesen ... nur nicht richtig verstanden 😞

    Ich weiß nicht wie ich das auf mein Beispiel anwenden soll.

    Muss ich extra für jeden Callback eine neue Funktion einführen?

    Das Komische ist, das Problem ist erst seit ich meinen Quelltext objektorientiert umschreibe ... vorher nutzte ich nur Funktionen wo es so wie oben funktioniert hat.



  • Ich auch nicht...


Anmelden zum Antworten