Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> итератор вложенного типа в методе класса-шаблона, помогите разобраться с шаблонами 
V
    Опции темы
satrap
Дата 30.11.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Пытаюсь подружиться с компилятором (gcc), пока безуспешно. Иногда доходит до смешного, как в этом случае, когда я просто пытаюсь обьявить переменную внутри метода. Код (сокращен до максимума для наглядности, пять вариантов тоже для наглядности):

Код

template <typename T_key>
struct my_tree {
    typedef std::map<T_key, my_tree> limb;
    void test() {
        limb::iterator i1;
        my_tree::limb::iterator i2;
        my_tree<T_key>::limb::iterator i3;
        std::map<T_key, my_tree>::iterator i4;
        std::map<T_key, my_tree<T_key> >::iterator i5;
    };
};


Ошибка компиляции для для всех i<1-5> одинакова:

Цитата

error: expected `;' before ‘i<x>’


Так как правильно обьявить итератор?  smile 
PM MAIL   Вверх
satrap
  Дата 30.11.2006, 03:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Всем спасибо. Правильно было:
Код

typename limb::iterator i;

Похоже компилятору туго доходит, что limb::iterator это тип. Поэтому нужно дополнительно указывать typename...
PM MAIL   Вверх
Daevaorn
Дата 30.11.2006, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(satrap @  30.11.2006,  04:40 Найти цитируемый пост)
Похоже компилятору туго доходит, что limb::iterator это тип. Поэтому нужно дополнительно указывать typename... 

Просто, не всегда это может быть именно тип...
PM MAIL WWW   Вверх
satrap
Дата 30.11.2006, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Верно. Но с толку сбивают сообщения об ошибках gcc. Часто по их содержанию невозможно догадаться в чем именно заключается ошибка. Примеров тому масса. Такое впечатление, что эти сообщения предназначены не для прочтения человеком, а для другого компилятора.  smile 
PM MAIL   Вверх
JackYF
Дата 30.11.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(satrap @  30.11.2006,  15:25 Найти цитируемый пост)
а для другого компилятора.  smile  


<offtopic>
 smile 
А это весьма забавная трактовка - прикиньте - раздать глючный код разным компиляторам.
Так они устроят состязания:
 - кто больше ошибок найдет;
 - кто выдаст самое большое/непонятное сообщение об ошибке;
 - кто поязвительнее расскажет программисту о неприемлемости его ДНК данным миром; 
 - и т.д.
А еще будут обсуждать код и проверять друг друга на глючность smile
</offtopic>


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.