咱们知道模板函数或模板类的定义通常都是和声明一块儿在头文件中,可是这样的话, 就暴露了内部实现,有什么办法可以将定义和声明进行分离呢?函数
答案是: 有的;blog
头文件: test.h; class test { template<class T> void f(T &val); } cpp文件: test.cpp; #include "test.h" template<T> void test::f(T &val){ ..... } // 要将定义和声明分开,能够经过实例化声明来实现; 注意: 实例化在cpp文件中; template void test::f<int>(int val); template void test::f<double>(double val); 这样,在进行调用时,就不会报找不到定义的错误了;