我在Ubuntu Linux 12.04 LTS上使用Qt 5.2.1。
这是我的类(class)(.h)的定义:
class RtNamedInstance
{
// [... other code here ...]
public:
static int _nextInstanceNumber;
static QMutex _syncObj;
};
这是我的实现(.cpp):
#include "rtnamedinstance.h"
// Initialize static members
int RtNamedInstance::_nextInstanceNumber = 0;
QMutex RtNamedInstance::_syncObj(QMutex::Recursive);
RtNamedInstance::RtNamedInstance(QString instanceName)
{
QMutexLocker(&_syncObj); // (*)
// [... other code here ...]
}
编译器退出,并在标记为
(*)
的行上出现以下错误:我想念什么?
最佳答案
正如@JoachimPileborg所建议的那样,我只是忘记键入QMutexLocker变量名...而这在某种程度上使编译器感到困惑...
正确的代码是(.cpp):
#include "rtnamedinstance.h"
// Initialize static members
int RtNamedInstance::_nextInstanceNumber = 0;
QMutex RtNamedInstance::_syncObj(QMutex::Recursive);
RtNamedInstance::RtNamedInstance(QString instanceName)
{
QMutexLocker locker(&_syncObj);
// [... other code here ...]
}