gpt4 book ai didi

c++ - 单例 C++ 中的错误

转载 作者:行者123 更新时间:2023-11-28 01:30:17 24 4
gpt4 key购买 nike

<分区>

我正在尝试创建线程安全的单例类,这是我的代码:

#include<iostream>
#include<mutex>

using namespace std;
std::mutex mtx;

class MySingleton{
private:
static MySingleton * singletonInstance;
MySingleton();
MySingleton(const MySingleton&);
const MySingleton& operator=(const MySingleton&);
~MySingleton();
public:
static MySingleton* GetInstance();
void foo();
};

MySingleton::MySingleton(){
std::cout << "Ctor\n";
};

MySingleton::~MySingleton(){
std::cout << "Dtor\n";
};

void MySingleton::foo()
{
cout << "Inside Foo" << endl;
}

MySingleton* MySingleton::GetInstance(){
//double check
if (singletonInstance == NULL){
std::lock_guard<std::mutex> lock(mtx);
if (singletonInstance == NULL)
singletonInstance = new MySingleton();
}
return singletonInstance;
}

int main(void){
MySingleton::GetInstance()->foo();
}

我在 VS2015 中执行这段代码,发现了以下错误:

1>Source.obj : error LNK2001: unresolved external symbol "private: static class MySingleton * MySingleton::singletonInstance" (?singletonInstance@MySingleton@@0PAV1@A)
1>E:\CPP\Test\Debug\Singleton.exe : fatal error LNK1120: 1 unresolved externals

我不确定我的代码中缺少什么,只是想用单例实例调用 foo()。任何人都可以帮助找出错误的原因吗?

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