0

发生问题时,我正在编写类模板以实现单例。

虽然在 .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;

这样做解决了我的问题,但我不知道为什么。所以,如果有人可以向我解释这条线的目的是什么,那就太棒了。

提前致谢

4

0 回答 0