2015-01-05 52 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