Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Alf от Октябрь 24, 2011, 17:30



Название: foreach и собственный класс-контейнер
Отправлено: Alf от Октябрь 24, 2011, 17:30
Есть класс:
Код
C++ (Qt)
class MyClass
{
  ...
private:
   QMap<int,QString> _map;
};

Я хочу реализовать возможность использовать экземпляр моего класса в конструкции foreach для последовательного перебора элементов закрытого контейнера '_map'. Что для этого нужно сделать ?

Предполагаю, что мой класс в этом случае должен быть шаблонным и поддерживать работу с итераторами ?

Наследоваться от QMap я не хочу, чтобы сделать невозможными использование методов QMap для пользователей MyClass.


Название: Re: foreach и собственный класс-контейнер
Отправлено: thechicho от Октябрь 24, 2011, 19:53
может поможет http://doc.qt.nokia.com/latest/containers.html#the-foreach-keyword


Название: Re: foreach и собственный класс-контейнер
Отправлено: shirushizo от Октябрь 25, 2011, 09:40
...
Наследоваться от QMap я не хочу, чтобы сделать невозможными использование методов QMap для пользователей MyClass.
Так private наследуйся=)


Название: Re: foreach и собственный класс-контейнер
Отправлено: Странник от Октябрь 25, 2011, 10:34
Так private наследуйся=)
гениально! а ничего страшного, что foreach все равно не заведется, ибо все public методы QMap станут private? <= )
когда-то ковырялся, помню, что для работы foreach класс должен предоставлять интерфейс для работы с STL-style const_iterator. минимальный набор методов запамятовал.


Название: Re: foreach и собственный класс-контейнер
Отправлено: Alf от Октябрь 25, 2011, 13:36
Цитировать
Так private наследуйся=)
Да, это первое что я попробовал сделать =)

Видимо всё сводится к
Цитировать
класс должен предоставлять интерфейс для работы с STL-style const_iterator