[英]Error in iterator while implementing doubly linked list in C++
我收到一個模棱兩可的錯誤,其中我試圖實現鏈接列表類的迭代器。 該程序說該函數不是我類的一部分。
測試程序:
for(list<int>::iterator it = l3.begin() ; it!=l3.end(); ++it)
cout<<(int)(it.value())<<" ";
鏈接列表類別:
template<typename T>
class list
{
int len;
link<T>* head, tail;
public:
/*class functions*/
class iterator{
link<T>* ptr;
public:
iterator() {ptr = nullptr;}
iterator(link<T>* p) {ptr = p;}
link<T>* get_ptr(){return ptr;}
iterator(iterator a){ptr = a.get_ptr();}
~iterator(){delete[] ptr;}
T& value(){return ptr->get_val();}
void operator=(iterator iter){ptr = iter.get_ptr();}
bool operator==(iterator iter){return ptr == iter.get_ptr();}
void operator++(){ptr = ptr->get_next();}
void operator--(){ptr = ptr->get_prev();}
bool operator!=(iterator iter){return ptr != iter.get_ptr();}
};
iterator begin(){return iterator(head);}
iterator end(){return iterator(nullptr);};
};
錯誤:
listtest.cpp: In function ‘int main(int, const char**)’:
listtest.cpp:24:19: error: ‘class mod::list<int>::iterator’ has no member named ‘value’
cout<<(int)(it.value())<<" ";
我已經評論了list
類的所有功能的定義,但是仍然遇到相同的錯誤。 這是我的link
類,它充當list
類的節點。
template<typename T>
class list;
template<typename T>
class link{
template<typename U>
friend class list;
private:
T value;
link<T>* prev;
link<T>* next;
public:
link(){prev = next = nullptr;}
link(const T& val){value = val; prev = next = nullptr;}
T& get_val(){return value;}
link<T>* get_prev(){return prev;}
link<T>* get_next(){return next;}
};
問題似乎出在迭代器的ctor之一中:
iterator(iterator a) { ptr = a.get_ptr(); }
它應該是:
iterator(iterator& a) { ptr = a.get_ptr(); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.