1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||
1 | ||||||
Указание типа итератора в шаблоне07.10.2015, 00:05. Показов 1792. Ответов 9
Метки нет (Все метки)
Расскажите про этот момент.
0
|
07.10.2015, 00:05 | |
Ответы с готовыми решениями:
9
Указание размера в шаблоне Вывод типа элемента контейнера из итератора на контейнер Указание типа после метода <!DOCTYPE> Указание типа документа |
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
07.10.2015, 00:50 | 2 | |||||
Сообщение было отмечено daslex как решение
Решение
daslex, да, в книжке "Шаблоны С++. Справочник разработчика", можешь поискать главу про зависимые имена в шаблонах. Там подробно про это и связанное с этим поведение.
1
|
DrOffset
|
07.10.2015, 00:57
#4
|
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
07.10.2015, 01:44 [ТС] | 5 |
Все норм. Я Джоссатиса читаю. Вот у него хорошо, но не очень плавно просто. А от книжки к книжке бросаться немного муторно. Там глава про аргументы по умолчанию и этот момент как-то или на потом оставлен или упущен просто. А сам попробуй догадайся.
Добавлено через 8 минут когда я вот так сделал const void show(); const void MyClass<T, CONT>::show() меня компилятор предупреждает: " warning: type qualifiers ignored on function return type [-Wignored-qualifiers]|" Что он хочет этим сказать? так не предупреждает об этом void MyClass<T, CONT>::show() const
0
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
|
07.10.2015, 02:24 | 6 |
у вас перегрузка функции show.
для разрешения перегрузки используется сигнатура функции, в которую входят аргументы функции и ее константность\неконстантность. возвращаемый тип не имеет значения, а вы свою функцию попытались перегрузить так, что они отличаются только типами возвращаемого значения, которые в сигнатуру не входят. при попытке вызова будет ошибка с неопределенностью, какую из этих двух вызывать. ну или даже еще раньше все случится, когда компилятор посчитает что у вас функция с одинаковой сигнатурой определена дважды.
1
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
07.10.2015, 02:37 [ТС] | 7 |
Чего-то я перегрузки не вижу. первая строчка относится к прототипу, вторая непосредственно к методу класса. Причем тут перегрузка я вообще не понимаю. Основной листинг в первом посте, остальное - экономия места.
0
|
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
|
||||||
07.10.2015, 02:44 | 8 | |||||
можно еще так:
1
|
265 / 165 / 56
Регистрация: 25.02.2015
Сообщений: 435
|
|
07.10.2015, 02:54 | 9 |
это я не так понял. я подумал что это два разных метода, один из которых возвращает
void, а второй MyClass<T, CONT> и залечилось это когда вы один из методов сделали константным. перегрузки нет. const void пожалуй не имеет значения, наверно поэтому и предупреждение, а не ошибка.
0
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
07.10.2015, 03:00 [ТС] | 10 |
я нашел ответ уже. да, не имеет смысла возвращать const void.
0
|
07.10.2015, 03:00 | |
07.10.2015, 03:00 | |
Помогаю со студенческими работами здесь
10
Указание типа переменной и ссылки при объявлении\инициализации Тело метода не может быть блоком итератора, так как "void" не является типом интерфейса итератора Форма поиска в шаблоне пользовательского типа записи Сделать вывод типа float в шаблоне вместо double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |