“C++要求模板函数的声明和实现对引用者必须都可见” 但是不是说 你必须要都放在.h 文件中 函数模板的具体实现 可以另放, 比如你可以写一个.hpp Test.h: C/C++ code ? 1 2 3 4 5 6 7 8 9 10 #include<iostream> using namespace std; class Test{ public : template < typename T> static void compare( const T& v1, const T& v2); }; #include "Test.hpp" Test.hpp: C/C++ code ? 1 2 3 4 5 6 7 8 template < typename T> void Test::compare( const T& v1, const T& v2) { if (v1 < v2) cout << "v1 < v2" << endl; if (v1 > v2) cout << "v1 > v2" << endl; } ++ PS:有些人不了解不要说不能分开到声明.h, 实现在.cpp,9L说的很对。 只有符合这个条件管你是放在哪里。 放在一起(头文件)一般只是考虑外部调用的情况,仅此而已。