Имея класс:
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;
};
};
Что я имею в виду, как я могу назначить объект "this" объекту myData_, а не объекту myLeft_, myRight_ или myParent_ для объекта "this"?
Я пробовал что-то вроде этого:
template<class T>
Link<T>* Link<T>::me() const
{
return const_cast<Link<T>*>(this);
}
и в Итераторе:
template<class T>
Link<T>::Iterator::Iterator():myData_(nullptr)
{
myData_ = me();//call from external class to me();
}
но я получаю сообщение об ошибке:
Ошибка 1, ошибка C2352: «Link :: me»: недопустимый вызов нестатической функции-члена
Спасибо.