Форум программистов, компьютерный форум, киберфорум
Наши страницы

Реализация энумератора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конструкторы классов http://www.cyberforum.ru/cpp-beginners/thread748551.html
Помогите разобраться с классами, не пойму как мне сделать правильно конструкторы класса Application,выдвёт ошибки в его конструкторе, помогите исправить пожалуйста: 2 IntelliSense: no instance...
C++ В матрице C(n,n) все положительные элементы, меньшие 2, принять равными нулю В матрице C(n,n) все положительные элементы, меньшие 2, принять равными нулю. Помогите, пожалуйста http://www.cyberforum.ru/cpp-beginners/thread748550.html
C++ Даны массивы A(n) и B(n). Построить массив C(n), для которого:
Вычислить следующее выражение C++
C++ Ввести число x и вычислить значение следующего выражения http://www.cyberforum.ru/cpp-beginners/thread748539.html
Ввести число x и вычислить значение следующего выражения: y=2(sin)^2 (3π-2x)(cos)^2 (5π+2x)
C++ найти в тексте самую встречаемую букву как сделать? подробнее

Показать сообщение отдельно
Basie
1 / 1 / 0
Регистрация: 27.12.2012
Сообщений: 8

Реализация энумератора - C++

28.12.2012, 00:00. Просмотров 402. Ответов 2
Метки (Все метки)

Пишу C++ аналог Enumerator'ов из .NET на основе стандартных итераторов. Сейчас интерфейс класса выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template < typename STLiterator >
class Enumerator {
public:
    Enumerator ( ) : _current(_end), _next(_end) { }
    Enumerator ( STLiterator begin, STLiterator end )
        : _current(begin), _next(begin), _end(end) { }
 
    bool operator ++ ( ) ; // Переход к следующему элементу
    ? operator * ( ); // Получение значения текущего элемента ("разыменование")
    ? operator -> ( ? ); // Доступ к членам элемента
 
private:
    STLiterator _current, _next, _end;
};
Класс должен работать с любыми классами, у которых есть обычный итератор (с операторами ++, *, ->) включая указатели.
Конструктор получает стандартные итераторы begin()/end() (или constBegin()/constEnd()), либо, в случае указателей, - начальное и конечное смещения.
Оператор ++ при вызове пытается сместиться к следующему элементу последовательности и, если это удалось, возвращает true, иначе (если дошли до конца) - false. Для доступа к самому первому элементу ++ тоже необходимо предварительно вызвать.
Операторы * и -> должны предоставлять доступ к значению текущего элемента и к его членам соответственно.
Вопрос: какими должны быть типы и параметры, вместо которых в интерфейсе стоят знаки вопроса? Как грамотно расставить const и & у этих типов?
P. S. Те, кому режет глаза перегрузка операторов ++ и *, могут в своём ответе использовать вместо них методы next и value с теми же параметрами/типом возвращаемого значения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru