类模板的定义及其成员函数的实现必须对于使用不同类型实例化它的每个地方都是可见的.即为了实例化myTemplate<int>你需要看到完整的定义和实现myTemplate.
最简单的方法是将模板及其成员函数的定义放在同一个标题中,但还有其他方法.例如,您可以将成员函数实现放在单独包含的单独文件中.然后,您可以从第一个标头中包含它,或者只包含您需要它的实现文件.
例如,一种做法是在一个.cpp文件中为不同的参数集显式实例化一个模板,并extern在头文件中声明这些实例.这样,这些实例化可以在其他源文件中使用,而不需要实现模板成员函数.但是,除非您包含实现文件,否则您将无法使用其他模板参数集.
即如果你有myTemplate<int>和myTemplate<std::string>定义为extern那么你可以使用它们,但如果myTemplate<double>没有定义,extern那么你不能使用它没有实现.