LINUX.ORG.RU

[c++][stl]Не идут шаблоны

 ,


0

0

Не понимаю в чём косяк :(

Есть замечательная книга (учебник) Т. Павловской "C++ ООП Практикум"
Вот, при попытке скомпилировать пример (после исправления косяков с namespace):

"http://tka4.timis.ru/materials/study/6 sem/4. Setevie Texnologii/Tuykina Disc 2008/Литература_программирование/C++/PS_OOP/Ch03/Task3_1.txt"

вываливется не понятная ошибка с ссылкой на след. строки:

std::list<SA_item<T> >::iterator i = arr.begin();
std::list<SA_item<T> >::iterator n = arr.end();

ошибка такая:

sa.h: In member function ‘void SparseArr<T>::Show(const char*)’:
sa.h:29: ошибка: expected `;' before ‘i’
sa.h:30: ошибка: expected `;' before ‘n’
...

Т.е. не понятно, как объявить итератор для списка параметризованных объектов?
Хотя на объявления списков этих обектов компилятор не ругается:

std::list<SA_item<T> > xxx;

в примерах (например здесь http://www.yolinux.com/TUTORIALS/LinuxTutorialC++STL.html )
есть вот такое:

vector< vector<int> >::iterator iter_ii;

и судя по всему прекрасно работает.
Помогите победить и понять итератор для списка параметризованных объектов.

★★★

Внутри шаблонов необходимо писать:

typename list<SA_item<T> >::iterator i = arr.begin();
typename list<SA_item<T> >::iterator n = arr.end();

По C++ куча годных книг. Приобщитесь.)

anonymous
()
Ответ на: комментарий от anonymous

Да, Анонимус прав.

ИМХО ещё лучше такие штуки при объявлении класса typedef-ить, чтоб в коде такие страшные вещи не писать

mint
()

>Есть замечательная книга (учебник) Т. Павловской "C++ ООП Практикум" дальше не читал, но осуждаю

anonymous
()

Где у вас определён тип T? Да, шаблонные ошибки в gcc выглядят неочевидно.

ЗЫЖ Согласен с предыдущим анонимусом: книжку выбросьте.

// pppp

anonymous
()

Начни с прочтения Страуса.

anonymous
()

Спасибо первому анонимусу, пример собрался и заработал.

Зря вы на Татьяну наезжаете. Этот учебник, кстати, рекомендован для ВУЗов России министерством образования.

Хотя некотрые примеры немного корявы, но в общем впечатление от книги положительные.

vyv ★★★
() автор топика
Ответ на: комментарий от anonymous

>Где у вас определён тип T? Да, шаблонные ошибки в gcc выглядят неочевидно.

По первой ссылке лежит полный текст программы. Как и сказал первый анонимус проблемы была в отсутствии "typename".

vyv ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.