Question

Je reçois des erreurs étranges lors de la construction des lignes de code suivantes: (J'inclus Qvector and QThread).

nœudprocess.h:

class NodeProcess : public QThread
{       public:
        NodeProcess();

        unsigned int create_NewProcess(int priority);
        NodeProcess operator[](int relativeID); private:
        int priority;
        unsigned int ID;
        unsigned int threadCount;

        QVector<NodeProcess> mProcess; 

};

NodeProcess.cpp:

NodeProcess::NodeProcess()
{
    threadCount = 0;
}

unsigned int NodeProcess::create_NewProcess(int priority){
    this->priority = priority;

    threadCount++;
    NodeProcess newProcess;
    mProcess.append(newProcess);
    return threadCount;
}

NodeProcess NodeProcess::operator[](int relativeID)
{
    return mProcess[relativeID];
}

Quelqu'un aucune idée de ce que je fais mal? Toute astuce m'aiderait :).

In file included from ..\..\..\..\5.2.1\mingw48_32\include/QtCore/qalgorithms.h:45:0,
                 from ..\..\..\..\5.2.1\mingw48_32\include\QtCore/qvector.h:45,
                 from ..\..\..\..\5.2.1\mingw48_32\include\QtCore/QVector:1,
                 from ..\NodeProcessModelling\nodeprocess.h:4,
                 from ..\NodeProcessModelling\nodeprocess.cpp:1:
..\..\..\..\5.2.1\mingw48_32\include/QtCore/qobject.h: In copy constructor 'QThread::QThread(const QThread&)':
..\..\..\..\5.2.1\mingw48_32\include/QtCore/qobject.h:465:20: error: 'QObject::QObject(const QObject&)' is private
     Q_DISABLE_COPY(QObject)
                    ^
..\..\..\..\5.2.1\mingw48_32\include/QtCore/qglobal.h:978:5: note: in definition of macro 'Q_DISABLE_COPY'
     Class(const Class &) Q_DECL_EQ_DELETE;\
     ^
In file included from ..\..\..\..\5.2.1\mingw48_32\include\QtCore/QThread:1:0,
                 from ..\NodeProcessModelling\nodeprocess.h:5,
                 from ..\NodeProcessModelling\nodeprocess.cpp:1:
..\..\..\..\5.2.1\mingw48_32\include\QtCore/qthread.h:57:21: error: within this context
 class Q_CORE_EXPORT QThread : public QObject
                     ^
In file included from ..\NodeProcessModelling\nodeprocess.cpp:1:0:
..\NodeProcessModelling\nodeprocess.h: In copy constructor 'NodeProcess::NodeProcess(const NodeProcess&)':
..\NodeProcessModelling\nodeprocess.h:7:7: note: synthesized method 'QThread::QThread(const QThread&)' first required here 
 class NodeProcess : public QThread
       ^
..\NodeProcessModelling\nodeprocess.cpp: In member function 'NodeProcess NodeProcess::operator[](int)':
..\NodeProcessModelling\nodeprocess.cpp:19:31: note: synthesized method 'NodeProcess::NodeProcess(const NodeProcess&)' first required here 
     return mProcess[relativeID];
                               ^
In file included from ..\..\..\..\5.2.1\mingw48_32\include/QtCore/qalgorithms.h:45:0,
                 from ..\..\..\..\5.2.1\mingw48_32\include\QtCore/qvector.h:45,
                 from ..\..\..\..\5.2.1\mingw48_32\include\QtCore/QVector:1,
                 from ..\NodeProcessModelling\nodeprocess.h:4,
                 from ..\NodeProcessModelling\nodeprocess.cpp:1:
..\..\..\..\5.2.1\mingw48_32\include\QtCore/qthread.h: In instantiation of 'void QVector<T>::append(const T&) [with T = NodeProcess]':
..\NodeProcessModelling\nodeprocess.cpp:13:31:   required from here
..\..\..\..\5.2.1\mingw48_32\include/QtCore/qglobal.h:979:12: error: 'QObject& QObject::operator=(const QObject&)' is private
     Class &operator=(const Class &) Q_DECL_EQ_DELETE;
            ^
..\..\..\..\5.2.1\mingw48_32\include/QtCore/qobject.h:465:5: note: in expansion of macro 'Q_DISABLE_COPY'
     Q_DISABLE_COPY(QObject)
     ^
In file included from ..\..\..\..\5.2.1\mingw48_32\include\QtCore/QThread:1:0,
                 from ..\NodeProcessModelling\nodeprocess.h:5,
                 from ..\NodeProcessModelling\nodeprocess.cpp:1:
..\..\..\..\5.2.1\mingw48_32\include\QtCore/qthread.h:57:21: error: within this context
 class Q_CORE_EXPORT QThread : public QObject
                     ^
In file included from ..\NodeProcessModelling\nodeprocess.cpp:1:0:
..\NodeProcessModelling\nodeprocess.h:7:7: note: synthesized method 'QThread& QThread::operator=(const QThread&)' first required here 
 class NodeProcess : public QThread
       ^
In file included from ..\..\..\..\5.2.1\mingw48_32\include\QtCore/QVector:1:0,
                 from ..\NodeProcessModelling\nodeprocess.h:4,
                 from ..\NodeProcessModelling\nodeprocess.cpp:1:
..\..\..\..\5.2.1\mingw48_32\include\QtCore/qvector.h:569:19: note: synthesized method 'NodeProcess& NodeProcess::operator=(const NodeProcess&)' first required here 
         *d->end() = copy;
                   ^
Makefile.Debug:227: recipe for target 'debug/nodeprocess.o' failed
mingw32-make[1]: *** [debug/nodeprocess.o] Error 1
mingw32-make[1]: Leaving directory 'C:/Qt/Tools/QtCreator/bin/build-NodeProcessModelling-Desktop_Qt_5_2_1_MinGW_32bit-Debug'
makefile:34: recipe for target 'debug' failed
mingw32-make: *** [debug] Error 2
18:03:35: The process "C:\Qt\Tools\mingw48_32\bin\mingw32-make.exe" exited with code 2.
Error while building/deploying project NodeProcessModelling (kit: Desktop Qt 5.2.1 MinGW 32bit)
When executing step 'Make'

Était-ce utile?

La solution

Quelqu'un aucune idée de ce que je fais mal?

Pas mal de choses!

Premièrement, si vous allez utiliser QThread, n'héritez pas de cela, à moins que vous ne planifiez en réalité de modifier la manière dont QThread gère la filetage. QThread est plus d'un contrôleur de fil que le fil réel lui-même.

Ce que vous devez faire est de créer votre classe et de dériver de QObject, puis de vous déplacer sur une nouvelle QThread. Vous pouvez lire sur comment " Vraiment utiliser vraiment QThreads "ici et utilisez le code exemple sous forme de modèle.

Vous créez également un qvecteur d'instances de crocrocrocession. Cela invoque le constructeur de copie, mais l'objet est dérivé de QObject, dont le constructeur de copie est privé. C'est pourquoi vous obtenez cette erreur: -

Erreur: 'QObject :: QOBJECT (Const QObject &)' est privé

Vous devez utiliser un QVecteur de pointeurs de processus de nœud: QVector et allouez-les comme requis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top