PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gtk, g_signal_connect und Methoden einer Klasse



tuxboy
07-03-2003, 04:15
Hi,
ich hab Probleme per g_signal_connect ein Object mit einer Klassenmethode zu verknüpfen ....

Mal ein Auszug:


class DirTree {
public:
void New ();
void GotoSelectedDirectory ();
...
};

void DirTree::New () {
...
signalHandler = g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (GotoSelectedDirectory()), NULL);
}

void DirTree::GotoSelectedDirectory () {
...
}


Die Beschwerde vom Compiler lautet:
cannot convert `DirTree::GotoSelectedDirectory()' from type `void' to type `void (*)()'

Kann mir jemand erklären wie man das ordentlich connected?? Bitte ist ziemlich dringend; deadline ist an diesem Wochenende*argh*...

Dankeschön und viele Grüße,

micha
07-03-2003, 10:48
Hi tuxboy,

bitte keine Mehrfachpostings, danke.

Gruß micha

brotzi
07-03-2003, 10:56
Ich habe leider auch noch nicht viel mit gtk gemacht, so wie ich das sehen müsste es aber so gehen:



class DirTree {
public:
void New ();
void GotoSelectedDirectory ();
...
};

void GotoSelectedDirectory_static(void* data){
if (!data) return;
((DirTree*)data)->GotoSelectedDirectory();
}

void DirTree::New () {
...
signalHandler = g_signal_connect (G_OBJECT (selection), "changed", G_CALLBACK (GotoSelectedDirectory_static), this);
}

void DirTree::GotoSelectedDirectory () {
...
}



Kann durchaus sein, daß das völliger Quatsch ist.

anda_skoa
07-03-2003, 11:01
Ich kenn mich mit GTK nicht aus, aber normalerweise kann man keine normale Methode als Callback verwenden, sondern nur als static deklarierte.

Vielleicht ist es einfacher, wenn du die C++ API von GTK benutzt.

http://www.gtkmm.org/

Ciao,
_

anda_skoa
07-03-2003, 11:08
Original geschrieben von micha
Hi tuxboy,

bitte keine Mehrfachpostings, danke.

Gruß micha

Ich schliesse mich dem an!

Hab die beiden Threads zusammengeführt.

Ciao,
_