Я включил заголовок QMutex и использую его, как показано ниже. Но я получаю следующую ошибку:
ошибка C2146: синтаксическая ошибка: отсутствует> ';' перед идентификатором> '_RecorderParamsMutex' ошибка C4430: отсутствует указатель типа - предполагается. > Примечание: C ++ не поддерживает default-int ошибка C4430: отсутствует указатель типа -> предполагается int. Примечание: C ++ не> поддерживает default-int
ошибка 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
Глядя на заголовочный файл , объявления классов заключаются в #ifdef. Попробуйте это так:
#define QT_THREAD_SUPPORT #include <qmutex.h>
Вероятно, это должен быть уровень проекта #define, чтобы были доступны и другие определения потоков.
Какую версию Qt вы используете? С вашего стиля заголовка это выглядит как Qt3
"В более ранних версиях Qt предлагался вариант сборки библиотеки без поддержки потоков. Начиная с Qt 4.0, потоки всегда включены." [источник]
Вы уверены, что в библиотеку встроена поддержка потоков?
отсутствует пространство имен? Я не знаком с QMutex, но если он поставляется с некоторой библиотекой, он, как ожидается, будет определен в пространстве имен библиотеки. Если это не «Общий».