我已经包含了QMutex标头并使用它,如下所示。但是我收到以下错误:
错误C2146:语法错误:缺失> ';'在标识符之前> '_RecorderParamsMutex'
错误C4430:缺少类型说明符 - 假设为int。 >注意: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
答案 0 :(得分:3)
查看header file,类声明由#ifdef包装。试试这样:
#define QT_THREAD_SUPPORT
#include <qmutex.h>
这可能应该是项目级别的#define,因此也可以使用其他线程定义。
答案 1 :(得分:2)
您使用的是哪个版本的Qt?从标题样式看起来像Qt3
“Qt的早期版本提供了在没有线程支持的情况下构建库的选项。从Qt 4.0起,线程始终处于启用状态。” [source]
您确定在库中内置了线程支持吗?
答案 2 :(得分:0)
缺少名称空间? 我不熟悉QMutex,但如果它附带了一些库,则应该使用库的命名空间来定义它。除非它是“共同的”。