Seite 1 von 1

Exception bei Thread

Verfasst: 10. September 2010 10:37
von july
Hallo,
ich hab ein Problem beim aufrufen des Threads.

void MainWindow::tStartButtonHandler() {
Thread th = new Thread(mManipulator, ui.tableWidget);
th.start();
}

Bei dem Aufruf kommt eine Exception: "Umwandlung von "Thread" in nicht-skalaren Typen "Thread" angefordert". Wisst ihr vielleicht, was damit gemeint ist?

Verfasst: 10. September 2010 10:39
von Alohis

Code: Alles auswählen

Thread *th = new Thread(mManipulator, ui.tableWidget); 


Probiers mal mit nem Pointer.

Verfasst: 10. September 2010 10:50
von july
ich arbeite auch mit Pointern: mManipulator und ui.tableWidget sind Pointer
Und wenn ich Thread *th mache, bekomme ich eine Exception und kann nicht auf die th.start() zugreifen.

Verfasst: 10. September 2010 10:54
von Alohis
Weil du natürlich bei einem Pointer nicht mehr über den Punkt Operator auf die methoden zugreifen kannst sondern über den Pfeil.

Code: Alles auswählen

void MainWindow::tStartButtonHandler() {
Thread *th = new Thread(mManipulator, ui.tableWidget);
th->start();
} 

Verfasst: 10. September 2010 10:55
von july
jetzt bekomme ich aber:

debug/moc_thread.o:(.rodata._ZTV6Thread[vtable for Thread]+0x14): undefined reference to `Thread::~Thread()'
make[1]: Leaving directory `/localhome/demo/QT-Projects/QtArmFinal'
debug/moc_thread.o:(.rodata._ZTV6Thread[vtable for Thread]+0x18): undefined reference to `Thread::~Thread()'
collect2: ld gab 1 als Ende-Status zurück
make[1]: *** [QtArmFinal] Fehler 1
make: *** [debug] Fehler 2

Verfasst: 10. September 2010 11:01
von july
hab ich jetzt auch gefixt, danke

Verfasst: 10. September 2010 11:47
von franzf
Das was du als "Exception" bezeichnest sind Fehler von Compiler bzw. Linker. Eine Exception ist ganz was anderes! Das ist eine Ausnahme zur Laufzeit. Eine Exception wirft man, und will man auf eine solche reagieren, fängt man diese mit "catch" im Code.
Lies dir das am besten nochmal durch im Buch deiner Wahl :)