Ошибки в консольном приложении (шаблоны…векторы)

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

б_д_в
Сообщения: 20
Зарегистрирован: 17 сен 2009, 12:11

Привет!

В консольном приложении выдает ошибки на следующую строчку кода:

Код: Выделить всё

template <class Iterator>
vector<list<typename Iterator::value_type> > Cluster(const Iterator begin, const Iterator end, int M)
{
	………………………….
}
Ошибки:
1. error C2143: syntax error : missing ';' before '<'
2. error C2501: 'vector' : missing storage-class or type specifiers
3. error C2059: syntax error : ';'
4. error C2143: syntax error : missing ';' before '<'
5. error C2653: 'Iterator' : is not a class or namespace name

Что здесь нужно изменить? Вроде бы ошибки простенькие, но что-то не получается исправить. Возможно вопрос «широко» задан, если что нужно детализировать – напишите.

Заранее благодарю.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Может так для начала?

Код: Выделить всё

#include <vector>
#include <list>
using namespace std;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
б_д_в
Сообщения: 20
Зарегистрирован: 17 сен 2009, 12:11

Благодарю, все исправил кроме одной ошибки.
Компилятор ругается на ф-ию randomize(); (error C2065: 'randomize' : undeclared identifier) в int main(int argc, char* argv[]).
Т.е.

Код: Выделить всё

int main(int argc, char* argv[])
{
randomize();//error

…………………..
return 0;
}
Пример взят из книги, написан очень, в общем (видимо, рассчитан на сильных программистов, которые разберутся).
Я знаю, что означает эта ошибка, но «победить» пока не могу, то ли нужен какой-то заголовочный файл или библиотека. Возможно, её нужно как-то самому расписать, и это связано с рандомизацией…
Если кто знает, подскажите, пожалуйста.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

randomize - это паскалевская функция, если мне не изменяет память. Используй srand((unsigned)time(0));
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
_SG
Сообщения: 53
Зарегистрирован: 28 фев 2009, 10:43
Откуда: Севастополь

В соседнем топике я тоже на randomize() нарвался. Разобрался.
randomize() работает в Борландовских компиляторах С (по крайней мере до версии 3.1)
там она определена как
inline void _Cdecl randomize(void) { srand((unsigned) time(NULL)); }
в stdlib.h
б_д_в
Сообщения: 20
Зарегистрирован: 17 сен 2009, 12:11

Согласен ... но выдало error C2065: 'random' : undeclared identifier. Я так понимаю, что random(int M) аналогично rand() в MS Visual C++?
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

в каком учебнике\источнике нашел что в с++ есть функция random ?
б_д_в
Сообщения: 20
Зарегистрирован: 17 сен 2009, 12:11

"С++ мастер-класс. 85 нетривиальных проектов, решений и задач".
_SG
Сообщения: 53
Зарегистрирован: 28 фев 2009, 10:43
Откуда: Севастополь

Какой компилятор? В 90-е годы очень были популярны от Борланда. (Проффи Ватком юзали или Вижуал Эйдж).
Newbie
Сообщения: 148
Зарегистрирован: 06 сен 2009, 19:45

Что самое интересное книга 2007 года издания. Компиляторы 90-ых точно не юзаются в книге)

б_д_в скажи номер примера из этой книги.
Ответить