kleine pointer frage (was beim speichern des pointers falsch ist?)
-
Guten Tag,
hiermit rufe ich eine Funktion aus meiner Klasse auf:
mainWindow->getcbaf(&startnet);(ein Teil) der Header Datei meiner Klasse sieht so aus:
typedef void (*cba)(void); void getcbaf(cba startnet1);und mit dieser Funktion sol der Zeiger eigentlich gespeichert werden:
void MainWindow::getcbaf(cba startnet1) { startnet=startnet1; }hierbei stürzt mein Programm leider ab. Eine kleine Hifle wäre super
Vielen Dank 
-
Wo genau gibt es einen Absturz? - Bist du mal mit dem Debugger durch gegangen?
-
Was ist
startnet? Und warum eine Setter-Funktiongetcbafnennen?Über die Art des Absturzes wären Informationen auch nützlich. Bist du schon mit dem Debugger durchgegangen und hast die genaue Stelle ausfindig gemacht?
Edit: Grr, zu langsam.

-
ja das stimmt die Namensgebung ist nicht ganz richtig.
gdb gibt mir folgendes aus:
Starting program: C:\data\projects\nets/main.exe
[New Thread 2480.0xf40]
[New Thread 2480.0xc64]Program received signal SIGSEGV, Segmentation fault.
0x00402db7 in MainWindow::getcbaf (this=0x0, startnet1=0x40180e <startnet()>) at win_m.cpp:26
26 startnet=startnet1;
(gdb)Eventuell ist noch zu erwaehnen, dass meine Klasse von Gtk::Window abgeleitet ist.
-
Du scheinst auf ungültigen Speicher zuzugreifen.
Zeig mal den Code so gut, wie möglich, wie du ihn benutzt.
-
void MainWindow::getcbaf(cba startnet1) {
startnet=startnet1;}
Tja mein freund du greifst nicht mit einem zeiger darauf sondern erstellst eine KOPIE.
Ein zeiger würde mit einem * funktionieren.
Du möchtest ja sicherlich startne1 auf den anderen zeigen lassen.Probieres mit * sowohl bei der Paramter übergabe sowie bei der zuweisung.
-
BesucherNachtUm1auslangew schrieb:
void MainWindow::getcbaf(cba startnet1) {
startnet=startnet1;}
Tja mein freund du greifst nicht mit einem zeiger darauf sondern erstellst eine KOPIE.
Ein zeiger würde mit einem * funktionieren.
Du möchtest ja sicherlich startne1 auf den anderen zeigen lassen.Probieres mit * sowohl bei der Paramter übergabe sowie bei der zuweisung.
Er benutzt einen Funktionszeiger.. Er macht eine Kopie eins Funktionszeigers, was überhaupt kein Problem ist.