Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2009, 11:33   #1
AndyBr
Новичок
Джуниор
 
Регистрация: 11.03.2009
Сообщений: 2
По умолчанию vector<T>::iterator begin - почему не компилируется?

Код:
template <class T>
void CStripCoordProc<T>::ToMedianFiltration()
{
    queue<T> aperture;
    vector<T> apertureSort;
    vector<T>::iterator begin;
    ......
Создал свой класс-шаблон, пытаюсь объявить итератор для работы с вектором. Ругается так:
Код:
D:\_JOB\__LIS\C\LMS400\lms400\CStripCoordProc.cpp|171|error: expected `;' before "begin"|
Причем итератор для работы с вектором, например, int-ов проходит без проблем.
Компилятор MinGW, идет вместе с бесплатной средой Code::Bloks.

Неужели нельзя объявлять итераторы в шаблонах????
AndyBr вне форума Ответить с цитированием
Старый 11.03.2009, 14:49   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Вот код для примера
Код:
#include <iostream>
#include <vector>
using namespace std;

template<typename T>
class Employee
{
public:
	vector<T> _vector;
	typename vector<T>::iterator _iterator;

	void push(const T& el)
	{
		_vector.push_back(el);
	}
	void out()
	{
		for(_iterator = _vector.begin(); _iterator != _vector.end(); ++_iterator)
			cout<<*_iterator<<endl;
	}
};
int main()
{
	Employee<int> emp;
	emp.push(10);
	emp.push(20);
	emp.push(30);
	emp.out();
	return 0;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 11.03.2009, 18:37   #3
AndyBr
Новичок
Джуниор
 
Регистрация: 11.03.2009
Сообщений: 2
По умолчанию

Действительно, теперь компилируется .
Спасибо!
PS. Прокатывает и такой вариант:
Код:
class vector<T>::iterator begin;
AndyBr вне форума Ответить с цитированием
Старый 11.03.2009, 19:20   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Разница в том, что у вас итератор называется begin, а у ISergeyN итератор указывает на начало.
MaTBeu вне форума Ответить с цитированием
Старый 11.03.2009, 22:56   #5
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Сообщение от MaTBeu Посмотреть сообщение
Разница в том, что у вас итератор называется begin, а у ISergeyN итератор указывает на начало.
Не в этом дело, в книге "Шаблоны С++" все описано.
P.S. Выложил теме "Литература по С++"
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....

Последний раз редактировалось ISergeyN; 11.03.2009 в 23:29.
ISergeyN вне форума Ответить с цитированием
Старый 12.03.2009, 19:56   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Что значит не в этом дело?
Вы понимаете разницу между просто итератором, и итератором, который указывает на начало контейнера?
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
класс Vector fclmhooligan Общие вопросы по Java, Java SE, Kotlin 3 05.04.2011 02:40
Почему не компилируется код? subsonic Общие вопросы Delphi 2 02.03.2009 08:23
Вопрос по <vector> kezman Общие вопросы C/C++ 1 13.08.2008 21:48
Не создается указатель на vector! mahsus Общие вопросы C/C++ 7 11.01.2008 16:07
проверить правильность расстановки операторов begin и end Тёмка Помощь студентам 1 10.12.2007 13:07