У меня есть код, который выглядит следующим образом:Как ссылаться на «класс владельца» на C++?
template<class T>
class list
{
public:
class iterator;
};
template<class T>
class list::iterator
{
public:
iterator();
protected:
list* lstptr;
};
list<T>::iterator::iterator()
{
//???
}
Я хочу, чтобы конструктор list::iterator
сделать iterator::lstptr
точку в списке он вызывается из. I.e .:
list xlst;
xlst::iterator xitr;
//xitr.lstptr = xlst
Как бы я это сделал?
А также, я ссылки на мой итератора-конструктор право, или я должен сделать что-то вроде этого:
template<class T>
class list<T>::iterator
{
public:
list<T>::iterator();
protected:
list* lstptr;
};
Вы пробовали код, закомментированный во втором блоке? Я не знаю C++ (только C), и это похоже на то, что я буду делать. – hhafez
Ваша последняя версия итератора верна, если вы меняете ctor из списка :: iterator(); -> iterator(); cheers –