Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 5
1

итератор в классе-шаблоне

12.10.2011, 14:57. Показов 666. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template<class T> class m_vector: public vector<T>
{
public:
T at(int i);
m_vector(){}
~m_vector(){}
};
 
template<class T> T m_vector<T>::at(int index)
{
 
int i=0;
 
for(m_vector<T>::iterator it=this->begin();this->end();++it)
{
if(i==index)
return *it;
++i;
}
}
Не компилится. Ругается на
C++
1
m_vector<T>::iterator it
Пишет expected ; before it

А если, допустим, так
C++
1
m_vector<char>::iterator it
то компилится нормально. В чем дело? Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.10.2011, 14:57
Ответы с готовыми решениями:

Как принять параметр-итератор в шаблоне функции?
Добрый день, знатоки! Чтобы набить руку, затеял наследование от класса std::vector. template...

Итератор в шаблонном классе
итератор в шаблонном классе?

Дружественные функции в классе-шаблоне
stdafx.h #include &lt;iostream.h&gt; template &lt;typename T&gt; class Iterator; template &lt;typename...

В шаблонном классе, один из параметров которого контейнер, объявить итератор этого контейнера
Собсно #include &lt;windows.h&gt; #include &lt;iterator&gt; #include &lt;vector&gt; using namespace std; ...

4
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
12.10.2011, 15:07 2
Вот так попробуй
C++
1
typename m_vector<T>::iterator it=this->begin();
кстати, что за странное условие выхода из цикла
C++
1
this->end();
?
1
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 5
12.10.2011, 15:15  [ТС] 3
Спасибо, помогло. А можно ещё в 2х словах почему typename обязателен?

А условие, конечно,
C++
1
it < this->end()
Перепечатывал вручную из виртуальной машины.
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
12.10.2011, 15:19 4
Цитата Сообщение от rpz Посмотреть сообщение
А можно ещё в 2х словах почему typename обязателен?
Потому что при указании имени типа используя оператор "::" в шаблонном классе (ф-ции) компилятор между именем типа и чем еще (например именем переменной) выберет что-то еще. Используя typename мы явно указываем компилятору, что речь идет именно об имени типа.



C++
1
it < this->end()
а в первом посте не так написанно)
1
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 5
12.10.2011, 15:58  [ТС] 5
Спасибо
0
12.10.2011, 15:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2011, 15:58
Помогаю со студенческими работами здесь

Как быть, если в шаблоне классе предполагается использование ОДИНАКОВЫХ типов?
Вот код, понятно, демонстрационныый, упрощён донельзя для понятности. #include &lt;windows.h&gt;...

Реализовать двусвязный список (list), итератор (iterator) и константный итератор (сonst_iterator) для списка
не могу понять что должно быть результатом. может подскажете примеры? пожалуйста. Задание:...

Особый итератор словаря. Итератор возвращающий нужные комбинации
Немогу разобраться, как написать итератор. У меня есть словарь, ключи это координаты, а значения...

Особый итератор словаря. Медленный итератор
Не могу разобраться, как написать итератор. У меня есть словарь, ключи это координаты, а значения...

Доля отличников в классе больше 2/5, но меньше 3/7, а всего в классе не более 15 учеников. Сколько всего в классе учеников?
Добрый вечер! Подскажите, пожалуйста! &quot;Доля отличников в классе больше 2/5, но меньше 3/7, а...

Как использовать объект класса, созданого в определеном классе, в другом классе
У меня такой вопрос,как использовать объект класса,созданого в определеном классе,в другом классе.У...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru