быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
1 | ||||||
В шаблонном классе, один из параметров которого контейнер, объявить итератор этого контейнера18.12.2011, 04:21. Показов 2001. Ответов 7
Метки нет (Все метки)
Собсно
0
|
18.12.2011, 04:21 | |
Ответы с готовыми решениями:
7
Как вы шаблонном классе определить контейнер, тип которого совпадает с именем параметра шаблона? Итератор в шаблонном классе Ошибка в шаблонном классе String в шаблонном классе |
387 / 151 / 16
Регистрация: 12.05.2011
Сообщений: 450
|
|||||||||||
18.12.2011, 09:05 | 2 | ||||||||||
вместо
чтобы компилятор понял, что t<T, t_>::iterator -- это название типа, а не член класса.
1
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
18.12.2011, 11:19 | 3 |
Вы пытаетесь сделать странную штуку. Нагородили класс с темплейтными параметрами, но чтобы его инстанцыровать приходится указывать как тип контейнера, так и тип элементов контейнера. Из-за необходимости указывать аллокаторы класс получился сложным, непереносимым и т.п.
Раз приходится указывать и контейнер и тип элементов, не проще ли написать шаблон с одним параметром и указывать ему сразу std::vector<int> или std::list<char> и т.п? Кажется это будет выглядеть проще и понятнее.
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
18.12.2011, 12:17 [ТС] | 4 | |||||
Я не умею написать шаблон с одним параметром, имея ввиду что фактически параметром шаблона может быть, например:
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
18.12.2011, 12:24 | 5 | |||||
std::vector<int> - это тип. Т.к. шаблон параметризуется типами, std::vector<int> - вполне подходит в качестве параметра для шаблона.
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
18.12.2011, 13:13 [ТС] | 6 |
Щас уже я не вспомню почему я прошёл мимо такого хорошего способа, придётся возвращаться в начало и всё по новой писать, но, сдаётся мне были какие-то причины на это. То ли мне нужна была идентификация как контейнера, так и его элементов, то ли что ещё.
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
18.12.2011, 13:41 | 7 |
Если в своем шаблонном классе с переданным типом вы будете работать как с контейнером и переданный тип будет контейнером - все будет компилится.
например если вы будете использовать Container::iterator и у переданного типа будет этот вложенный тип - все будет ок. Если же вы передатите своему шаблону скажем int, компилятор будет ругаться на конструкцию Container::iterator, потому что у инта нет никаких итераторов. Ошибка может быть малопонятной, но она будет. Можете считать это той самой идентификацией в компайл тайме.
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
18.12.2011, 15:39 [ТС] | 8 | |||||
У меня внутри класса объявлен вектор:
0
|
18.12.2011, 15:39 | |
18.12.2011, 15:39 | |
Помогаю со студенческими работами здесь
8
Ошибки в шаблонном классе Параметры в шаблонном классе Итератор контейнера set Итератор для контейнера Перегрузка операторов в шаблонном классе Конструктор копирования в шаблонном классе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |