Klassen-Problem
-
Irgendwie habe ich Tomaten auf den Augen, denn ich sehe irgendwie nicht wo der Fehler liegt.
Also, ich habe eine Klasse erstellt, die sidc heisst, in der einige Fkt. deklariert sind...
Ein Bsp. aus meiner sidc.cpp
void sidc::success() { gtk_init(NULL,NULL); dtable = gtk_table_new(2, 1, FALSE); dbox = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(dbox), "Meldung"); dtext = gtk_label_new("Der Schueler konnte erfolgreich hinzugefuegt werden"); gtk_table_attach(GTK_TABLE(dtable), dtext, 0, 1, 0, 1, GTK_FILL , GTK_FILL, 2, 2); dok = gtk_button_new_with_label("OK"); gtk_table_attach(GTK_TABLE(dtable), dok, 0, 1, 1, 2, GTK_EXPAND, GTK_FILL, 2, 2); gtk_signal_connect(GTK_OBJECT(dok), "clicked",GTK_SIGNAL_FUNC(&sidc::destroydbox), NULL); /* Hier soll der Fehler sein, aber wenn ich nur &destroydbox schreibe, sagt er mir auch Fehler und will das ich &sidc::destroydbox schreibe */ gtk_container_add(GTK_CONTAINER(dbox), dtable); gtk_widget_show_all(dbox); gtk_main(); }
Meine sidc.h
#ifndef _sidcH_ #define _sidcH_ #include <iostream> #include <fstream> #include <stdio.h> #include <stdlib.h> #include <gtk/gtk.h> using namespace std; class sidc { private: GtkWidget *window, *table, *text, *label1, *gvname, *gname, *gstrasse, *ghnr, *gplz, *gort, *gtfon, *gtut, *ok, *dbox, *dok, *dtext, *dtable; fstream temp, students; public: sidc(); void toggle_button_callback(GtkWidget *widget, gpointer data); void destroy(GtkWidget *widget, gpointer data); void destroydbox(GtkWidget *widget, gpointer data); void already_exist(); void success(); }; #endif
...wenn ich das jetzt aber kompilieren will kommt immer der Fehler bei allen voids wo ich &sidc:: schreibe...
Fehler: Umwandlung von »void (sidc::*)(GtkWidget*, void*)« nach »void (*)()«
Hoffe mir kann jemand sagen was ich falsch mache.
Rgds
Coda
-
Du versuchst einen Methodenpointer in einen Funktionspointer zu casten, was soweit ich eiß einfach nicht möglich ist.
Meine Empfehlung wäre es, gtkmm zu nutzen.
Da wurde Gtk schön in einzelne Klassen gepackt, und nutzt außerdem viele Features der C++-Sprache (Vererbung, virtuelle Funktionen, etc.)
Tutorials dazu findest du im Magazin.