打算写一个C++单例的模板类,编写完代码后,报一个链接错误。
操作系统:windows
编辑器:vs2017
代码
singleton.h
#include <mutex>
#include <iostream>
class TestSingleton;
template <class T>
class Singleton
{
private:
Singleton() {};
virtual ~Singleton() {}
public:
static T* GetInstance();
private:
static T* instance;
//std::mutex mutex;
};
singleton.cpp
#include "Singleton.h"
template <class T>
T * Singleton<T>::instance = nullptr;
template <class T>
T* Singleton<T>::GetInstance()
{
if (instance == nullptr)
{
instance = new T;
}
return instance;
}
main.cpp
#include <iostream>
#include "Singleton.h"
class TestSingleton
{
public:
TestSingleton()
{
}
~TestSingleton()
{
}
static void test()
{
std::cout << "TestSingleton::test" << std::endl;
}
private:
};
int main()
{
std::cout << "Hello World!\n";
//单例测试代码
/*TestSingleton sig;
sig.test();*/
//TestSingleton::test();
Singleton<TestSingleton>::GetInstance()->test();
}
运行结果及详细报错内容
vs编译报以下错误
曾用过继承的方式编写调用singleton的代码,编译依然报错。
希望能够编译通过,请指教!