C++: 模板函數定義與聲明分離;

咱們知道模板函數或模板類的定義通常都是和聲明一塊兒在頭文件中,可是這樣的話, 就暴露了內部實現,有什麼辦法可以將定義和聲明進行分離呢?函數

答案是: 有的;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);


這樣,在進行調用時,就不會報找不到定義的錯誤了;
相關文章
相關標籤/搜索