咱們知道模板函數或模板類的定義通常都是和聲明一塊兒在頭文件中,可是這樣的話, 就暴露了內部實現,有什麼辦法可以將定義和聲明進行分離呢?函數
答案是: 有的;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); 這樣,在進行調用時,就不會報找不到定義的錯誤了;