使用struct模板的struct模板

时间:2015-01-05 15:47:58

标签: c++ templates struct linked-list

我遇到了在另一个模板化结构中实现模板化结构的问题。

基本上这有效:

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>而不是结构ListElementPointer *?

的workaroud PS:顺便说一句,这是一个学校项目。不允许使用标准向量或列表类,我不想为我使用的每个类型键入新定义......也不允许使用类: - /

1 个答案:

答案 0 :(得分:1)

如果您能够使用C ++ 11,则可以使用以下别名声明:

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