我在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 ...]
}

10-07 22:18