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

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

Восстановить пароль Регистрация
 
rpz
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 5
12.10.2011, 14:57     итератор в классе-шаблоне #1
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
то компилится нормально. В чем дело? Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2011, 14:57     итератор в классе-шаблоне
Посмотрите здесь:

Дружественные функции в классе-шаблоне C++
Как быть, если в шаблоне классе предполагается использование ОДИНАКОВЫХ типов? C++
У меня класс B в классе A, а в классе B рекурсивная функция переопределения оператора "()", как её вызвать, не создавая явно объект класса B? C++
Итератор ? C++
C++ Известны оценки по физике каждого ученика двух классов.Определить средниюю оценку в каждом классе.Количество учащихся в каждом классе одинаковое!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
12.10.2011, 15:07     итератор в классе-шаблоне #2
Вот так попробуй
C++
1
typename m_vector<T>::iterator it=this->begin();
кстати, что за странное условие выхода из цикла
C++
1
this->end();
?
rpz
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 5
12.10.2011, 15:15  [ТС]     итератор в классе-шаблоне #3
Спасибо, помогло. А можно ещё в 2х словах почему typename обязателен?

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



C++
1
it < this->end()
а в первом посте не так написанно)
rpz
0 / 0 / 0
Регистрация: 12.10.2011
Сообщений: 5
12.10.2011, 15:58  [ТС]     итератор в классе-шаблоне #5
Спасибо
Yandex
Объявления
12.10.2011, 15:58     итератор в классе-шаблоне
Ответ Создать тему
Опции темы

Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru