私は学期のプロジェクトとしてQtで申請を行っています。トピックは「食事する哲学者の問題」です。今、私は問題を抱えています、そして私はそれを解決する方法を本当に知りません。問題は次のとおりです。filozofowie(philisophers)というオブジェクトの配列があり、クラスfilozof(philosopher)のオブジェクトが含まれています。クラスphilospherは、クラスThreadから派生しています。配列からforループでスレッドを開始しようとすると、そのうちの4つが開始され、エラーが発生します。
エラーは次のとおりです:http://i.imgur.com/D0i7T.png
コードは次のとおりです。
Filozof.h
#ifndef FILOZOF_H
#define FILOZOF_H
#include <QtCore>
#include <QtGui>
class Filozof : public QThread
{
    public:
    Filozof();
    void run();
    QString name;
    QLabel *stan;
};
#endif
Mainclass.h
#ifndef MAINCLASS_H
#define MAINCLASS_H
#include <QtGui>
#include <QtCore>
#include "ui_mainwindow.h"
#include "Filozof.h"
class MainClass : public QMainWindow
{
    Q_OBJECT
public:
    MainClass(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~MainClass();
    Ui::MainClassClass ui;
    Filozof filozofowie[4];
    QSystemSemaphore *kelner;
public slots: 
    void startSimulation();
    void stopSimulation();
};
#endif // MAINCLASS_H
一部のmainclass.cpp
void MainClass::startSimulation() 
{
    this->kelner = new QSystemSemaphore("kelner", 4, QSystemSemaphore::Create);
    ui.textEdit->append("[" + QDateTime::currentDateTime().toString() + "] Start      symulacji");
    for(int i = 0; i < 5; i++)
    {
        filozofowie[i].start();
        if(filozofowie[i].isRunning())
        {
           ui.textEdit->append("[" + QDateTime::currentDateTime().toString() + "] Watek filozofa " + QString::number(i) + " wystartowal");
        }else{
           ui.textEdit->append("[" + QDateTime::currentDateTime().toString() + "] Blad podczas tworzenia watku filozofa " + QString::number(i));
       }
   }
    ui.buttonStart->setEnabled(false);
    ui.buttonStop->setEnabled(true);
}
付録のテキストは気にしないでください。これらはポーランド語のメッセージです。