[英]How can I define iterator and const_iterator in my class while I uses std::vector as field in my class?
[英]How can I assign this pointer to my Iterator class
上課:
template<class T>
class Link
{
Link* myParent_;
Link* myLeft_;
Link* myRight_;
T* myData_;
void assign_(Link<T>*& marker, Link<T>*& aLink);
void insert_(const T&);//inserts new data into a link
void insert_(const T*);
void remove_();//removes data from a link
public:
class Iterator : public iterator<std::bidirectional_iterator_tag, Link<T>*>
{
private:
Link<T>* myData_;//How can I assign object of external class to this link? Rest of the Q below.
public:
Iterator();
Iterator& left()const;
Iterator& right()const;
Iterator& top()const;
};
};
我的意思是如何將“此”對象分配給myData_而不是“此”對象的myLeft_,myRight_或myParent_?
我嘗試過這樣的事情:
template<class T>
Link<T>* Link<T>::me() const
{
return const_cast<Link<T>*>(this);
}
在Iterator中:
template<class T>
Link<T>::Iterator::Iterator():myData_(nullptr)
{
myData_ = me();//call from external class to me();
}
但出現錯誤:
錯誤1錯誤C2352:“ Link :: me”:非法調用非靜態成員函數
謝謝。
通過構造函數:
Iterator(Link<T> *l) : myData_(l) {}
或通過setter和getter:
void setData(Link<T> *d) { myData_ = d; }
Link<T>* getData() const { return myData_; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.