Seite 1 von 1

Kann QtConcurrent nur statische Klassenfunktionen aufrufen?

Verfasst: 9. Juli 2009 07:35
von ms47
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:

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


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

Verfasst: 9. Juli 2009 08:09
von pfid
http://doc.qtsoftware.com/4.5/qtconcurrentrun.html#run
Additional API Features
Using Member Functions