Konvertieren eines sigc::slots in einen Funktionszeiger?

engelmarkus

Erfahrenes Mitglied
Guten Abend zusammen,
ich probiere gerade mit der libsigc++ herum.
Nur leider hab ich hier ein Problem: In der Dokumentation heißt es unten:
You can also pass slots as method parameters where you might normally pass a function pointer.
Genau das scheint bei mir aber nicht zu funktionieren. Möglicherweise stell ich mich auch nur recht an :D .
C:
#include <sigc++/sigc++.h>

typedef void (*funktionszeiger)(int);

void zielfunktion(int i) { }
void zeigerfunktion(funktionszeiger t) { }

int main() {
  sigc::slot<void, int> slot = sigc::ptr_fun(&zielfunktion);

  zeigerfunktion(slot);   // zeigerfunktion(&zielfunktion); geht
  
  return 0;
}

main.cpp:11: error: cannot convert ‘sigc::slot<void, int, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>’ to ‘void (*)(int)’ for argument ‘1’ to ‘void zeigerfunktion(void (*)(int))’
 
Hi.

Frag doch mal auf der Mailingliste was mit dieser Aussage gemeint ist.

Etwas stutzig macht mich die Formulierung, das man einen Slot als "method parameter" übergeben kann - warum nicht als Funktionsparameter? Evtl. bezieht sich das nur auf bestimmte sigc++ Methoden?

Gruß
 
Zurück