C++;单链表的实现 我试图在C++中实现一个单独链表。这是我的节点 template <typename T> struct snode{ explicit snode(const T& val, snode* ptr=0) : value(val), next(ptr){} T value; snode* next; };
您没有显示显式实例化(或铸造)类型。“T”无法编译,因为它无法解析“T”与之协调的内容。迭代器类需要“模板化”或在类中显式强制转换,以便协调。由于C++;单链表的实现 我试图在C++中实现一个单独链表。这是我的节点 template <typename T> struct snode{ explicit snode(const T& val, snode* ptr=0) : value(val), next(ptr){} T value; snode* next; };,c++,templates,iterator,C++,Templates,Iterator,您没有显示显式实例化(或铸造)类型。“T”无法编译,因为它无法解析“T”与之协调的内容。迭代器类需要“模板化”或在类中显式强制转换,以便协调。由于迭代器被声明为类模板的嵌套类slist,因此需要使用以下语法定义迭代器: template <typename T> class slist<T>::iterator { ... }; 模板类slist::迭代器{…}; 我不确定,我明白了。你能稍微修改一下代码来帮助我理解吗?@Jumper,有很多事情会妨碍你的代码工作。下面
迭代器
被声明为类模板的嵌套类slist
,因此需要使用以下语法定义迭代器
:
template <typename T> class slist<T>::iterator { ... };
模板类slist::迭代器{…};
我不确定,我明白了。你能稍微修改一下代码来帮助我理解吗?@Jumper,有很多事情会妨碍你的代码工作。下面是一个框架工作程序,它演示了语法的正确性。
class iterator{
public:
explicit iterator(snode<T>* node = 0) : node_(node){}
T& operator*(){return node_->value; }
T* operator->(){return &(node_->value); }
iterator& operator++(){
if(node_ != 0)node_ = node_->next;
return *this;
}
iterator operator++(int){
iterator tmp = *this;
if(node_ != 0) node_ = node_->next;
return tmp;
}
bool operator==(const iterator& iter) const{return (node_ == iter.node_);}
bool operator!=(const iterator& iter) const{ return (node_ != iter.node_);}
snode<T>* node_;
};
can't resolve symbol T
template <typename T> class slist<T>::iterator { ... };