Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将此指针分配给迭代器类_C++_Iterator - Fatal编程技术网

C++ 如何将此指针分配给迭代器类

C++ 如何将此指针分配给迭代器类,c++,iterator,C++,Iterator,有阶级: template<class T> class Link { Link* myParent_; Link* myLeft_; Link* myRight_; T* myData_; void assign_(Link<T>*& marker, Link<T>*& aLink); void insert_(const

有阶级:

    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; 
        };
};
模板
类链接
{
链接*myParent\ux;
链接*myLeft\ux;
链接*myRight\ux;
T*我的数据;
无效分配(链接*&标记,链接*&链接);
void insert(const T&);//将新数据插入链接
无效插入(常数T*);
void remove();//从链接中删除数据
公众:
类迭代器:公共迭代器
{
私人:
Link*myData\//如何将外部类的对象分配给此链接?下面是Q的其余部分。
公众:
迭代器();
迭代器&left()常量;
迭代器&right()常量;
迭代器&top()常量;
};
};
我的意思是如何将“this”对象分配给myData,而不是“this”对象的myLeft、myRight或myParent

我试过这样的方法:

template<class T>
Link<T>* Link<T>::me() const
{
    return const_cast<Link<T>*>(this);
}
模板
Link*Link::me()常量
{
返回常量(本);
}
在迭代器中:

template<class T>
Link<T>::Iterator::Iterator():myData_(nullptr)
{
    myData_ = me();//call from external class to me();
}
模板
Link::Iterator::Iterator():myData(nullptr)
{
myData_U8;=me();//从外部类调用me();
}
但我有一个错误:

错误1错误C2352:'Link::me':非法调用非静态成员函数


谢谢。

通过构造函数:

Iterator(Link<T> *l) : myData_(l)  {}
迭代器(Link*l):myData_Ul(l){
或者通过setter和getter:

void setData(Link<T> *d)  { myData_ = d; }
Link<T>* getData() const { return myData_; }
void setData(Link*d){myData\ud;}
Link*getData()常量{return myData}

通过构造函数:

Iterator(Link<T> *l) : myData_(l)  {}
迭代器(Link*l):myData_Ul(l){
或者通过setter和getter:

void setData(Link<T> *d)  { myData_ = d; }
Link<T>* getData() const { return myData_; }
void setData(Link*d){myData\ud;}
Link*getData()常量{return myData}

请使标题有意义。请使标题有意义。Get/Set(er)是一种代码味道。类的接口应该是可以在对象上执行的操作,而不是允许您处理底层数据结构的接口。类的接口应该是可以在对象上执行的操作,而不是允许处理底层数据结构的接口。