template 模板相关,百度不到的error
想写一个BST模板类,但是一开始就出了问题,可是按道理这里应该不会出问题的。可能是c++版本的问题?代码如下:
template <typename T> using ListNodePosi = ListNode<T>*;
template <typename T> struct ListNode {
T data;
ListNodePosi<T> pred; //前驱
ListNodePosi<T> succ; //后继
ListNode() {} //针对header和trailer的构造
ListNode(T e, ListNodePosi<T> p = NULL, ListNodePosi<T> s = NULL)
: data(e), pred(p), succ(s) {} //默认构造器
ListNodePosi<T> insertAsPred(T const& e); //前插入
ListNodePosi<T> insertAsSucc(T const& e); //后插入
};
error是
别名模板类型 "ListNode *" 与 别名模板 "ListNodePosi" (已声明 所在行数:1) 的重新声明中 " *" 的上一个类型不兼容
ListNode 要先定义吧, using 在之后使用,下面是可以编译通过的
template <typename T> struct ListNode {
T data;
ListNode<T>* pred; //前驱
ListNode<T>* succ; //后继
ListNode() {} //针对header和trailer的构造
ListNode(T e, ListNode<T>* p = NULL, ListNode<T>* s = NULL)
: data(e), pred(p), succ(s) {} //默认构造器
ListNode<T>* insertAsPred(T const& e); //前插入
ListNode<T>* insertAsSucc(T const& e); //后插入
};
template <typename T> using ListNodePosi = ListNode<T>;
哦!原来如此,谢谢大佬!