之前在QT(c++)中也遇到过这个问题,是因为类的静态成员只是在类中声明,没有在类外定义。
问题代码
我的类中的静态成员:
//运动控制器 单例模式
class MoveController : public QObject
{
Q_OBJECT
static QMutex mutex; //静态成员
static QReadWriteLock RWLock_wheel1; //静态成员
static QReadWriteLock RWLock_wheel2; //静态成员
static SteerWheel* wheel1; //静态成员
static SteerWheel* wheel2; //静态成员
static MoveController* instance; //静态成员
public:
~MoveController(){
SAFE_DELETE_ELEMENT(instance)
}
解决
添加类外定义(在.cpp文件中):
//静态成员类外定义
QMutex MoveController::mutex;
QReadWriteLock MoveController::RWLock_wheel1;
QReadWriteLock MoveController::RWLock_wheel2;
SteerWheel* MoveController::wheel1 = NULL;
SteerWheel* MoveController::wheel2 = NULL;
MoveController* MoveController::instance = NULL;
编译通过