模板类的声明和函数体必须都放在头文件中。否则编译器在实体化的时候没办法根据模板参数来确认实体部分的代码。这是规则。如果您不想把模板类的定义放在头文件,那么唯一的方法就是把模板类定义、实体、使用者都放进file2.cpp。