发生问题时,我正在编写类模板以实现单例。
虽然在 .h 文件中有一个静态指针,但由于链接器问题(lnk 2001 和 lnk 1120 与 15)而无法编译。
我简化了我的代码以获得更容易理解的问题:
#pragma once
#include "SingletonTemplate.h"
int main()
{
SingletonTemplate<int>::test();
}
我的班级 SingletonTemplate.h(没有 .cpp 顺便说一句)
template<class T>class SingletonTemplate
{
public:
static int myInt;
static void test()
{
SingletonTemplate<T>::myInt = 1;
}
}
我在几篇文章中读到静态变量的进一步声明可以解决这个问题。我在我的函数之外添加了这个(但仍在.h中):
template< typename T >
int SingletonTemplate<T>::myInt;
这样做解决了我的问题,但我不知道为什么。所以,如果有人可以向我解释这条线的目的是什么,那就太棒了。
提前致谢