Während der Laufzeit bekomme ich die Fehlermeldung: "pure vitual function called".QThreadPool ruft reine virtuelle Funktion der Elternklasse auf QRunnable
QThreadpool scheint Bm
die pure virtual void run()
der Elternklasse QRunnable
, anstatt aus void run()
in der abgeleiteten Klasse zu nennen. Seltsamerweise, wenn ich die Funktion manuell mit b_1.run();
aufrufen, gibt es kein Problem während der Laufzeit.
Hier ist meine Klasse implentation:
class Bm : public QRunnable
{
public:
void run()
{
test();
}
private:
void test();
};
Hier ist meine Hauptfunktion, wo der Fehler passiert.
int main()
{
QThreadPool pool;
pool.setMaxThreadCount(1);
BM b_1;
pool.start(&b_1);
return 0;
}
Meine Frage: Warum tut Qthreadpool Bm::run()
über QRunnble::run()
verwenden?
Versuchen Sie, pool.waitForDone() aufzurufen, bevor Sie von main() zurückkehren. Sieht aus wie b_1 gelöscht wird, bevor der Thread gestartet wird ... – Archie
Danke. Das hat funktioniert. Wie hadle ich das jetzt? lösche ich die Frage, weil die Antwort auf mein Problem trivial erscheint oder sollte es eine gepostete Antwort geben? – FruitSokrat
Ich denke, Ihre Frage ist absolut gültig und kann jemand anderem helfen. – Archie