Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Модератор
Автор FAQ
3682 / 959 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
1

Шаблоны классов. Ошибка параметра по умолчанию

21.04.2010, 23:23. Просмотров 2109. Ответов 11
Метки нет (Все метки)

Есть
C++
1
template <class data_type> class List;
и
C++
1
2
typedef unsigned char point_dist;
template <class data_type = point_dist> class point;
Первая из ошибок...
C++
1
2
3
4
5
6
class PathFind{
    point_dist** map;
    point_dist xlen, ylen;
    List<point> Path;
// ...
}
А именно на этой строке
C++
1
List<point> Path;
error C3203: point: неспециализированный класс шаблон нельзя использовать в качестве аргумента шаблон для параметра шаблон "data_type", ожидается действительный тип
Если указать параметр
C++
1
List<point<int>> Path;
Ошибка пропадает. Но мне хотелось бы чтобы параметр по умолчанию работал, т.к. мне чаще приходится работать с классом одного типа и раздувать запись и переписывать предыдущий код не очень хочется. Что не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2010, 23:23
Ответы с готовыми решениями:

Переопределение параметра по умолчанию. Параметр один. ошибка
Возникает ошибка: Не знаю, как быть. #include &quot;stdafx.h&quot; #include&lt;iostream&gt; using...

ошибка при компиляции проги, использущей шаблоны классов
Возникла ошибка при компиляции проги, использующей шаблоны. Ошибка - undefined symbol /*...*/ in...

Шаблоны классов: непонятная ошибка в одном из методов класса
Задача создать шаблон двоичного дерева поиска. В методе удаления узла IntelliSense выдает ошибку:...

Шаблоны классов. Ошибка `unable to match function definition to an existing declaration`
#pragma once template &lt;typename T = int&gt; class SingleBuffer { public: SingleBuffer(T fd):...

11
12 / 12 / 3
Регистрация: 15.04.2010
Сообщений: 31
21.04.2010, 23:53 2
C++
1
List< point<> > Path;
Так вот применяются параметры по умолчанию
1
Модератор
Автор FAQ
3682 / 959 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
22.04.2010, 00:51  [ТС] 3
Спасибо, действительно заработало. Странно, ведь в stl сплошные шаблоны но указывать ничего не надо, как так? Дополнительные <> писать как то не очень красиво...
0
12 / 12 / 3
Регистрация: 15.04.2010
Сообщений: 31
22.04.2010, 00:59 4
Шаблонов в stl то конечно много, но чтот я там не часто видел, чтобы ВСЕ параметры задавались по умолчанию, обычно там есть обязательные параметры, поэтому, наверно, не обращаешь внимание на необязательные...
0
Модератор
Автор FAQ
3682 / 959 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
22.04.2010, 14:49  [ТС] 5
Seishin, Т.е. нормальным решением данного вопроса остается только написание <> всегда когда надо использовать параметр по умолчанию или написание такого
C++
1
typedef point<> ipoint;
И вызов cpoint когда речь идет о параметре по умолчанию?
0
12 / 12 / 3
Регистрация: 15.04.2010
Сообщений: 31
22.04.2010, 17:03 6
Тебя красота что ли волнует... Другого решения я не знаю, да и, думаю, нет его... А typedef-ить - это уже личное дело, мне кажется, что так несколько запутаннее получается( в данном случае ).
0
Модератор
Автор FAQ
3682 / 959 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
22.04.2010, 17:24  [ТС] 7
Мне тяжело ориентироваться в коде где много <>. Незнаю уж почему )
1
12 / 12 / 3
Регистрация: 15.04.2010
Сообщений: 31
22.04.2010, 21:24 8
Гыы, ну не думаю, что у тя задача написать свою stl, в которую порой залезешь посмотреть и только и остается тихо офигевать - как все это работает и блин где тут начало))
0
Эксперт С++
5017 / 2596 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.04.2010, 21:29 9
может попробовать такую запись тогда?
C++
1
typedef point<point_dist> PointD;
0
Эксперт С++
2329 / 1702 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
22.04.2010, 21:34 10
insideone, Seishin прав, для использования аргументов по умолчанию нужно указывать пустые скобки. Подробнее здесь.
1
Модератор
Автор FAQ
3682 / 959 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
22.04.2010, 21:57  [ТС] 11
Seishin, это точно)) да нет, я так.. по мелочи

fasked, заметьте - я выше об этом догадался пожалуй это единственный для меня вариант)

CyBOSSeR, будем знать
1
Эксперт С++
5017 / 2596 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.04.2010, 22:30 12
Цитата Сообщение от insideone Посмотреть сообщение
fasked, заметьте - я выше об этом догадался пожалуй это единственный для меня вариант)
не заметил
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2010, 22:30

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как сделать значение по умолчанию для параметра, если оно должно быть значением по умолчанию для типа T?
Как сделать значение по умолчанию для параметра, если оно должно быть значением по умолчанию для...

Шаблоны классов (умножение классов)
Прошу помочь, нужно создать шаблон для умножения значений 2-х классов. Умножить классы просто...

Шаблоны и параметр по умолчанию
Добрый день. Вроде всё делаю по учебнику, но компилятор не пропускает: #include &lt;iostream&gt;...

Шаблоны классов
Если ли в Ruby возможность создавать шаблоны классов? Т.е. есть ли аналог template &lt;class Type&gt;...

Шаблоны классов
Всем привет. Я только зарегистрировался и не имею опыта в созданиях темы на каких либо форумах....

Шаблоны классов
Зачем нужен шаблонный класс, какой от него главный смысл?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.