Kann QtConcurrent nur statische Klassenfunktionen aufrufen?
Verfasst: 9. Juli 2009 07:35
Hallo,
ich beschäftige mich gerade aus Interesse mit QtConcurrent. Wenn ich eine Funktion innerhalb der Main aufrufe, funktioniert dies, genauso, wenn ich eine Funktion einer Klasse mit static deklariere. Wenn die Funktion der Klasse nicht als static deklariert ist, dann funktionier es nicht.
Kann QtConcurrent nur statische Klassenfunktionen aufrufen?
Folgendes Grundgerüst habe ich mal eben zusammen gebastelt:
Ich kann mir auch nicht vorstellen, dass QtConcurrent::run() nur mit statischen Funktionen arbeitet. Hat da jemand einen Tipp für mich?
Danke schon mal im Voraus.
P.S. das Projekt befindet sich im Anhang
Gruß
Markus
ich beschäftige mich gerade aus Interesse mit QtConcurrent. Wenn ich eine Funktion innerhalb der Main aufrufe, funktioniert dies, genauso, wenn ich eine Funktion einer Klasse mit static deklariere. Wenn die Funktion der Klasse nicht als static deklariert ist, dann funktionier es nicht.
Kann QtConcurrent nur statische Klassenfunktionen aufrufen?
Folgendes Grundgerüst habe ich mal eben zusammen gebastelt:
Code: Alles auswählen
// ---------- main.cpp ----------
#include <QtCore/QCoreApplication>
#include <QtConcurrentRun>
#include "klasse1.h"
void run()
{
int ra = rand();
qDebug() << ra;
sleep(5);
qDebug() << ra;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Klasse1 k1;
QtConcurrent::run( k1.runNonStatic ); // das funktioniert nicht
QtConcurrent::run( Klasse1::runStatic ); // das funktioniert
QtConcurrent::run( run ); // das funktioniert
return 0;
}
// ---------- klasse1.cpp ----------
#include "klasse1.h"
Klasse1::Klasse1()
{
}
void Klasse1::runNonStatic()
{
int ra = rand();
qDebug() << ra;
sleep(5);
qDebug() << ra;
}
void Klasse1::runStatic()
{
int ra = rand();
qDebug() << ra;
sleep(5);
qDebug() << ra;
}
// ---------- klasse1.h ----------
#ifndef KLASSE1_H
#define KLASSE1_H
#include <QThread>
#include <QDebug>
#include <iostream>
class Klasse1 : public QThread
{
public:
Klasse1();
void runNonStatic();
static void runStatic();
};
#endif // KLASSE1_H
Danke schon mal im Voraus.
P.S. das Projekt befindet sich im Anhang
Gruß
Markus