2015-01-05 87 views
0

我正面臨着在另一個模板化結構中實現模板化結構的問題。使用結構模板的結構模板

基本上這個工作:

template<typename T> 
struct ListElement { 
    T Value; 
    struct ListElement<T>* Next; 
}; 

template<typename M> 
struct List { 
    struct ListElement<M>* ContainedElements; 
}; 

但我真正想要的就是這樣一種實現:

template<typename T> 
struct ListElement { 
    T Value; 
    struct ListElement<T>* Next; 
}; 

template<typename M> 
typedef struct ListElement<M>* List; 

的事情是,你不能用模板使用的typedef。任何編寫struct List<Anytype>而不是struct ListElementPointer *的workaroud?

PS:這是一個學校項目。使用標準向量或列表類是不允許的,我不想爲我使用的每種類型輸入新的定義......類也是不允許的: -/

+0

你是什麼意思的「你不能使用typedef模板」。你遇到什麼錯誤或問題? –

+0

@StephaneRolland它給出了語法錯誤,因爲它是不允許的。它被討論在其他主題[[鏈接](http://stackoverflow.com/questions/2448242/struct-with-template-variables-in-c)] – TradeItEasy

回答

1

如果您能夠使用C++ 11,你可以使用下面的別名聲明:

template<typename M> 
using List = ListElement<M>*; 
+0

謝謝。應該補充的是,它在C++ 11中被添加爲「別名聲明」。 – TradeItEasy