c++ - 使用结构模板的结构模板

标签 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*?

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

最佳答案

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

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

关于c++ - 使用结构模板的结构模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27782949/

相关文章:

c++ - 如何使自定义图形适合 boost 图形库模板?

c - 嵌套结构的首选分配

c - 结构的字段是否算作变量?数组的元素算作变量吗?

c++ - 有什么方法可以找到 VarDecl 的功能?

C++ 添加逗号分隔值

c++ - std::make_shared 中的原始指针

c++ - 使用 gnuplot 的多重定义错误

c++ - 将 lambda 作为参数传递时重载函数

c++ - 在 C++ 模板函数中,我可以返回取消引用的参数类型吗?

if-statement - 如何在结构初始化中添加if语句