例:
#pragma once
#include <list>
template<typename T> class IdGenerator
{
public:
……
T Gen();
……
};
/*下面这段代码写在.h里面就能编译通过
*但是剪切、粘贴到.cpp就编译不过,报错“无法解析的外部符号”*/
template<typename T>
T IdGenerator<T>::Gen()
{
return 0;
}
为什么只能写在.h里面?
还有一个问题:
尽管报错“无法解析的外部符号”,但是在.cpp中右键点Gen这个方法,然后点“转到声明”,仍然能转到头文件相应的声明,说明能链接上啊?为什么无法解析?