Hi allerseits.
Ich programmiere schon einige Zeit in c++, meist kleinere Sachen, habe die Sprache jedoch noch nie "gezielt" gelernt. Jetzt will ich das ganze mal etwas geplanter angehen und mir die GTK+ 2.0 Bibliothek etwas genauer ansehen, sowie etwas Erfahrung mit der Sprache gewinnen.
Ich bin jetzt jedoch auf ein Problem gestoßen, dass ich weder mit Dirk Louis' C/C++ Kompendium, noch Allmeister Google, noch der Forensuche lösen konnte.
In GTK wird beim Klick-Ereignis auf einen Button an die aufgerufene Funktion der Zeiger zum geklickten Button sowie ein Zeiger vom Typ gpointer (nicht gpointer* ) übergeben. gpointer sollte auf die Informationen zeigen, die ich in der Funktion verarbeiten will, die Funktion selbst ist vom Typ void. Da ich der Funktion mehrere Informationen übergeben will, habe ich diese in einer eigenen Klasse zusammengefasst. Beim Klick-Event übergebe ich der Funktion statt des gpointers einen Zeiger auf eine vorher erstellte Instanz dieser Klasse. Vom Typ gpointer caste ich das Ganze dann auf void*, was auch wunderbar funktioniert.
Nun habe ich also einen void-Zeiger zu der Stelle, an der die gewünschte Instanz meiner Klasse steht - Wie kann ich c++ jetzt mitteilen, dass es diesen Zeiger als Zeiger vom Typ meiner eigenen Klasse betrachten soll? Das ganze ist eigentlich eine sichere Angelegenheit, ich kenne die genaue Adresse und den Typ, nur c++ kennt den Typ nicht und gibt mir bei verschiedenen Castingmöglichkeiten entweder beim Übersetzen die Info, dass ich das nicht darf, oder gibt mir bei anderen Castingmöglichteiten zur Laufzeit die Info, dass das nicht möglich ist. Kann ich dem Compiler (g++) irgendwie mitteilen, dass das mit dem Datentyp an der Stelle schon stimmt?
Oder gibt es andere, elegantere Möglichkeiten, als der ganze casting-Wust?
lg und schonmal Danke fürs Durchlesen
Dece
Ich programmiere schon einige Zeit in c++, meist kleinere Sachen, habe die Sprache jedoch noch nie "gezielt" gelernt. Jetzt will ich das ganze mal etwas geplanter angehen und mir die GTK+ 2.0 Bibliothek etwas genauer ansehen, sowie etwas Erfahrung mit der Sprache gewinnen.
Ich bin jetzt jedoch auf ein Problem gestoßen, dass ich weder mit Dirk Louis' C/C++ Kompendium, noch Allmeister Google, noch der Forensuche lösen konnte.
In GTK wird beim Klick-Ereignis auf einen Button an die aufgerufene Funktion der Zeiger zum geklickten Button sowie ein Zeiger vom Typ gpointer (nicht gpointer* ) übergeben. gpointer sollte auf die Informationen zeigen, die ich in der Funktion verarbeiten will, die Funktion selbst ist vom Typ void. Da ich der Funktion mehrere Informationen übergeben will, habe ich diese in einer eigenen Klasse zusammengefasst. Beim Klick-Event übergebe ich der Funktion statt des gpointers einen Zeiger auf eine vorher erstellte Instanz dieser Klasse. Vom Typ gpointer caste ich das Ganze dann auf void*, was auch wunderbar funktioniert.
Nun habe ich also einen void-Zeiger zu der Stelle, an der die gewünschte Instanz meiner Klasse steht - Wie kann ich c++ jetzt mitteilen, dass es diesen Zeiger als Zeiger vom Typ meiner eigenen Klasse betrachten soll? Das ganze ist eigentlich eine sichere Angelegenheit, ich kenne die genaue Adresse und den Typ, nur c++ kennt den Typ nicht und gibt mir bei verschiedenen Castingmöglichkeiten entweder beim Übersetzen die Info, dass ich das nicht darf, oder gibt mir bei anderen Castingmöglichteiten zur Laufzeit die Info, dass das nicht möglich ist. Kann ich dem Compiler (g++) irgendwie mitteilen, dass das mit dem Datentyp an der Stelle schon stimmt?
Oder gibt es andere, elegantere Möglichkeiten, als der ganze casting-Wust?
lg und schonmal Danke fürs Durchlesen
Dece