Форум программистов, компьютерный форум CyberForum.ru

Создать итератор для списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вычисление значения функции на интервале в табличном оформлении http://www.cyberforum.ru/cpp-beginners/thread1308148.html
Друзья, нужна помощь. Необходимо, кровь из носа, за 2 дня сдать лабораторную (черт меня дернул поступить в таком возрасте в универ). Но проблема в том, что за изучением разделов математики программирование как-то не успелось. Если найдется время, будьте добры помочь (убедительная просьба, тем кто возьмется - пожалуйста, объясняйте комментариями ваши действия). Имеем: f1(xi)- приближенные...
C++ Найти сумму степеней элементов последовательности Нужен код для этого условия: Даны действительные числа a1, ..., a10. Вычислить a1+a22+...+a1010. И блок-схему к этой задачи пожалуйста, кому не сложно. Спасибо. http://www.cyberforum.ru/cpp-beginners/thread1308142.html
Функция с переменным числом параметров C++
В функцию с переменным числом параметров поступают символы, конец списка - ноль-символ '\ 0'. Найти и вывести символ чаще всего встречается. Как это реализовать вообще?
C++ Найти локальный минимум в массиве
Дан массив N, найти номер его первого локального минимума . (локальный минимум — это элемент, который меньше любого из своих соседей) заранее сэнк, и вопрос, есть ли программа которая рисует блок схемы по коду, просто нужно сдать работу, а самому долго рисовать
C++ Увеличить каждый третий элемент массива в 2 раза http://www.cyberforum.ru/cpp-beginners/thread1308119.html
Напишите программу, которая увеличит каждый третий элемент массива в 2 раза. Ввод данных в одномерный целочисленный массив осуществляет посредством цикла WHILE..., а вывод – DO WHILE
C++ Увеличить элементы массива с нечетными индексами на два Напишите программу, которая увеличит элементы массива с нечетными индексами на «2». Ввод данных в одномерный целочисленный массив осуществляет посредством цикла WHILE..., а вывод – DO WHILE подробнее

Показать сообщение отдельно
Nosey
1347 / 398 / 107
Регистрация: 22.10.2014
Сообщений: 862
Завершенные тесты: 2
23.11.2014, 15:56
В моей реализации оператор -> для итератора возвращает константную ссылку.
C++
1
2
3
4
const T* operator->() const
* * {
* * * * return &target->data;
* * }
Ваши функция getAge() не отмечена константной:
C++
1
2
3
int studentcl::getAge() {
return age;
}
setAge Тоже не отмечена и слава богу
C++
1
2
3
void studentcl::setAge(int Age) {
age = Age;
}
Обратите внимание на эти два оператора вашего итератора:

C++
1
2
3
4
5
6
7
8
T& operator*() const
* * {
* * * * return target->data;
* * }
const T* operator->() const
* * {
* * * * return &target->data;
* * }
Если вы желаете непонятно почему использовать оператор -> "доступа к полю" (я не знаю как его правильно зовут), то стоит убрать в итераторе const у возвращаемого значения.
Либо же использовать операцию разыменования, так же перегруженную у итератора. т.е.

вместо
C++
1
2
auto ptr = StudentList.begin(); //указатель на начало списка
ptr->setAge(77);
писать

C++
1
2
auto ptr = StudentList.begin(); //указатель на начало списка
(*ptr).setAge(77);
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru