Сообщение Re: "Расширить" operator *() от 23.12.2022 7:01
Изменено 23.12.2022 7:04 Stanislav V. Zudin
Re: "Расширить" operator *()
Здравствуйте, Su34, Вы писали:
S>Доброго дня.
S>Пишу свой iterator (усеченная версия):
S>
S>Как мне получить доступ к _pos, если *it показывает только _val. Т.е.где-то в тексте:
S>
Гм. Ну либо
_my_node = it._pos;
Либо operator *() должен возвращать сцылку на какую-то структуру, которая содержит всё, к чему надо добраться.
Перегрузки по возвращаемому значению нет, поэтому два оператора создать не получится.
S>Доброго дня.
S>Пишу свой iterator (усеченная версия):
S>
class iterator
S>{
S> NODE* _pos;
S> int _val;
S> iterator(NODE* pos) : _pos(pos) {}
S> int operator *() { return _pos->_val; }
S>};
S>Как мне получить доступ к _pos, если *it показывает только _val. Т.е.где-то в тексте:
S>
S>iterator it = myList.begin(); // iterator my::begin() { return iterator(_my_node); }
S>...
S>_my_node = it->_pos; // НЕ ПОЛУЧАЕТСЯ !
S>
Гм. Ну либо
_my_node = it._pos;
Либо operator *() должен возвращать сцылку на какую-то структуру, которая содержит всё, к чему надо добраться.
struct IteratorGiblets
{
NODE* _pos;
int _val;
};
class iterator
{
IteratorGiblets myGiblets;
... всё остальное
}
Перегрузки по возвращаемому значению нет, поэтому два оператора создать не получится.
Re: "Расширить" operator *()
Здравствуйте, Su34, Вы писали:
S>Доброго дня.
S>Пишу свой iterator (усеченная версия):
S>
S>Как мне получить доступ к _pos, если *it показывает только _val. Т.е.где-то в тексте:
S>
Гм. Ну либо
_my_node = it._pos;
Либо operator *() должен возвращать сцылку на какую-то структуру, которая содержит всё, к чему надо добраться.
Перегрузки по возвращаемому значению нет, поэтому два оператора создать не получится.
Upd. Чтобы не было путаницы в операторах, стоит заглянуть сюда: https://en.cppreference.com/w/cpp/language/operator_member_access
S>Доброго дня.
S>Пишу свой iterator (усеченная версия):
S>
class iterator
S>{
S> NODE* _pos;
S> int _val;
S> iterator(NODE* pos) : _pos(pos) {}
S> int operator *() { return _pos->_val; }
S>};
S>Как мне получить доступ к _pos, если *it показывает только _val. Т.е.где-то в тексте:
S>
S>iterator it = myList.begin(); // iterator my::begin() { return iterator(_my_node); }
S>...
S>_my_node = it->_pos; // НЕ ПОЛУЧАЕТСЯ !
S>
Гм. Ну либо
_my_node = it._pos;
Либо operator *() должен возвращать сцылку на какую-то структуру, которая содержит всё, к чему надо добраться.
struct IteratorGiblets
{
NODE* _pos;
int _val;
};
class iterator
{
IteratorGiblets myGiblets;
... всё остальное
}
Перегрузки по возвращаемому значению нет, поэтому два оператора создать не получится.
Upd. Чтобы не было путаницы в операторах, стоит заглянуть сюда: https://en.cppreference.com/w/cpp/language/operator_member_access