Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
insideone
Модератор
Автор FAQ
3643 / 922 / 51
Регистрация: 10.01.2010
Сообщений: 2,478
#1

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

21.04.2010, 23:23. Просмотров 1698. Ответов 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++):

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

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

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

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

Шаблоны классов - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string&gt; #include&lt;conio.h&gt; using namespace std; ...

Шаблоны классов - C++
Помогите пожалуйста написать шаблон класса двумерный числовой массив(матрица) Методы: конструктор с параметрами, деструктор ...

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

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

CyBOSSeR, будем знать
1
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 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
Привет! Вот еще темы с ответами:

Шаблоны классов - C++
Добрый день. Изучаю шаблоны классов в С++ в среде MVC 2006. Проблема в следующем: я создал шаблон класса стек, с размером этого самого...

Шаблоны классов - C++
Доброго времени суток. Сегодня на форуме зарегался очередной неродивый быдлокодер, которому нужна ваша помощь! head.h #include...

Шаблоны классов - C++
реализовал стек. хочу вставить шаблон. не получается. не компиллирует да и вообще куча ошибок. как эта штука работает? #include...

Шаблоны классов - C++
Всем привет!!! Подскажите пожалуйста в чем ошибка ? class PRIMA должен работать с типом int и float шаблон создал по этой...


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

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

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