gpt4 book ai didi

c++ - Boost C++ 单例错误 LNK2001 : unresolved external symbol "private: static long Nsp::HL::flag" (? flag@HL@Nsp@@0JA)

转载 作者:搜寻专家 更新时间:2023-10-31 00:05:20 30 4
gpt4 key购买 nike

我尝试创建一个多线程单例模式类。

标题:

class HL{

public:
static HL* getInstance();
.........
private:
static HL* instance;
static boost::once_flag flag;
HL();
static void initOnce();
}

CPP:

HL* HL::instance = NULL;

HL* HL::getInstance(){
if(instance == NULL){
boost::call_once(flag, initOnce);
}
return instance;
}

void HL::initOnce(){
instance = new HL();
}

我收到这个错误:

error LNK2001: unresolved external symbol "private: static long Nsp::HL::flag" (?flag@HL@Nsp@@0JA)

怎么了?

最佳答案

需要在cpp文件中定义静态成员变量:

boost::once_flag Nsp::HL::flag;

如果你需要,你可以初始化它(我没有使用boost::once_flag,也不能告诉你它是否需要初始化以及如何初始化):

boost::once_flag Nsp::HL::flag = {whatever goes here};

关于c++ - Boost C++ 单例错误 LNK2001 : unresolved external symbol "private: static long Nsp::HL::flag" (? flag@HL@Nsp@@0JA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2549722/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com