Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
insideone
Модератор
Автор FAQ
3657 / 937 / 112
Регистрация: 10.01.2010
Сообщений: 2,513
#1

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

21.04.2010, 23:23. Просмотров 1715. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2010, 23:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шаблоны классов. Ошибка параметра по умолчанию (C++):

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

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

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

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

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

Шаблоны классов
Доброго времени суток! Начал разбираться в шаблонах классов , написал вот такой...

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

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

CyBOSSeR, будем знать
1
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
22.04.2010, 22:30 #12
Цитата Сообщение от insideone Посмотреть сообщение
fasked, заметьте - я выше об этом догадался пожалуй это единственный для меня вариант)
не заметил
1
22.04.2010, 22:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2010, 22:30
Привет! Вот еще темы с решениями:

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

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

Шаблоны классов
Доброго времени суток. Сегодня на форуме зарегался очередной неродивый...

Шаблоны классов
Привет. При написании шаблона класса столкнулся с такой вот ошибкой. Я в этой...


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

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

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