Почему QMutex неизвестен? - PullRequest
0 голосов
/ 20 января 2010

Я включил заголовок QMutex и использую его, как показано ниже. Но я получаю следующую ошибку:

ошибка C2146: синтаксическая ошибка: отсутствует> ';' перед идентификатором> '_RecorderParamsMutex'

ошибка C4430: отсутствует указатель типа - предполагается. > Примечание: C ++ не поддерживает default-int

ошибка C4430: отсутствует указатель типа -> предполагается int. Примечание: C ++ не> поддерживает default-int

#ifndef RECORDERinterface_h
    #define RECORDERinterface_h
    #include "qstring.h"
    #include "ccc.h"
    #include "ddd.h"
    #include <qmutex.h>
    #include "eee.h"

using namespace Common; //for aaaaa

class RecorderInterface{
    //the implemented recorders are my friends, the may access all my private stuff :)
    friend class A;
    friend class B;

public:
    RecorderInterface();     
    bool            setParam(RecorderPrintParam *up);


private:
    QMutex          _RecorderParamsMutex;
};

#endif

Ответы [ 3 ]

3 голосов
/ 20 января 2010

Глядя на заголовочный файл , объявления классов заключаются в #ifdef. Попробуйте это так:

#define QT_THREAD_SUPPORT
#include <qmutex.h>

Вероятно, это должен быть уровень проекта #define, чтобы были доступны и другие определения потоков.

2 голосов
/ 20 января 2010

Какую версию Qt вы используете? С вашего стиля заголовка это выглядит как Qt3

"В более ранних версиях Qt предлагался вариант сборки библиотеки без поддержки потоков. Начиная с Qt 4.0, потоки всегда включены." [источник]

Вы уверены, что в библиотеку встроена поддержка потоков?

0 голосов
/ 20 января 2010

отсутствует пространство имен? Я не знаком с QMutex, но если он поставляется с некоторой библиотекой, он, как ожидается, будет определен в пространстве имен библиотеки. Если это не «Общий».

...