64,683
社区成员
发帖
与我相关
我的任务
分享
jeff@ubuntu-jeff:/mnt/hgfs/Shared$ g++ -o single single_pattern.cpp
/tmp/ccCCI4Mw.o:在函数‘Log::createLogInstance()’中:
single_pattern.cpp:(.text._ZN3Log17createLogInstanceEv[_ZN3Log17createLogInstanceEv]+0x18):对‘Log::myMtx’未定义的引用
single_pattern.cpp:(.text._ZN3Log17createLogInstanceEv[_ZN3Log17createLogInstanceEv]+0x4c):对‘Log::myMtx’未定义的引用
collect2: error: ld returned 1 exit status
static mutex myMtx;
#include <iostream>
#include <mutex>
using namespace std;
class Log
{
public:
static Log* createLogInstance()
{
if(_instance == NULL)
{
myMtx.lock();
if(_instance == NULL)
_instance = new Log;
myMtx.unlock();
}
return _instance;
}
private:
Log(){}
~Log()
{
if(_instance != NULL ) delete _instance;
}
static Log *_instance;
static mutex myMtx; //这行不算定义吗?
};
Log *Log::_instance = NULL;
mutex Log::myMtx; //这行注释掉,就编译不过