我正在编写一个类模板,以便在出现问题时实现Singleton。
虽然在.h文件中有静态指针,但由于链接器问题(lnk 2001和lnk 1120 on vs 15),它无法编译。
我简化了我的代码以获得更易理解的问题:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container1"></div>
<div class="container2"></div>
<div class="container3"></div>
我的班级SingletonTemplate.h(没有.cpp顺便说一句)
#pragma once
#include "SingletonTemplate.h"
int main()
{
SingletonTemplate<int>::test();
}
我在几篇帖子中读到,静态变量的进一步声明可以解决这个问题。我在我的函数之外添加了这个(但仍然在.h中):
template<class T>class SingletonTemplate
{
public:
static int myInt;
static void test()
{
SingletonTemplate<T>::myInt = 1;
}
}
这样做解决了我的问题,但我不知道为什么。 所以,如果有人能解释我这条线的目的是什么,那就太棒了。
提前致谢