2012-04-07 40 views
3

我一直在玩弄模板來獲得他們的感覺,我想對自己的類型做一個類專業化。我搜索了一段時間的互聯網,但我沒有發現這一點。模板類專業化,以處理自己的類型

舉例來說,如果我有一個class Array

template<class T> 
class Array{ 
... 
void print(); 
} 

是否有可能專門方法print()T=Array<unspecified type>

template<class T> 
void Array<Array<T>>::print(){ 
    //do something diffrent for array of array 
    //this code wont work 
} 

我成功地做到這

template<> 
void Array<Array<int>>::print(){ 
    //print in matrix format 
    //this code works 
} 

我沒有看到這個功能是非常有用的,但我仍然好奇

回答

2

AFAIK您只能全班進行專業化。一旦我需要這樣的東西(實際上,我只需要兩個不同的東西),所以我創建了一個輔助類,其中只包含必須專門化的成員,並使主體類繼承它。

2

有一個稱爲部分專業化的功能,你可以應用這樣的東西。然而,我不認爲你可以部分專門化成員函數而不需要部分專門化整個類。