У меня есть класс, который я хочу выставить список структур (которые просто содержат некоторые целые числа). Я не хочу, чтобы внешняя сторона изменяла эти данные, просто перебирала их и читала их Пример:
struct TestData
{
int x;
int y;
// other data as well
}
class IterableTest
{
public:
// expose TestData here
};
теперь в моем коде я хочу использовать свой класс следующим образом:
IterableTest test;
BOOST_FOREACH(const TestData& data, test.data())
{
// do something with data
}
Я уже прочитал эту статью http://accu.org/index.php/journals/1527 об участниках. Однако я не хочу (или не могу) сохранять все TestData во внутреннем векторе или что-то в этом роде. Это связано с тем, что сам класс не владеет хранилищем, т.е. На самом деле нет базового контейнера, к которому можно получить доступ непосредственно классом. Сам класс может запросить внешний компонент для получения следующего, предыдущего или i-го элемента.
Итак, в основном я хочу, чтобы мой класс вел себя так, как будто у него была коллекция, но на самом деле у нее ее нет. Любые идеи?