
| Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
![]() |
||
Программирование на С++,шаблоны
|
||
| Философия, технологии, алгоритмы! |
![]() |
|
|
Опции темы |
|
|
#2 |
|
Форумец
Сообщений: 782
Регистрация: 09.01.2003
|
serk, читай Страуструпа. И на будущее:
http://abr.pp.ru/smart-questions-ru.html |
|
|
|
|
#8 |
|
Форумец
|
LSL
А где ты в VB видел шаблоны классов!? :confused: Или ты несколько лет пишешь на плюсах??????? fishca добавил [date]1078177721[/date]: serk Ты просто поражаешь! www.ya.ru в этом сильно помогает... http://www.yandex.ru/yandsearch?rpt=...E0%F1%F1%EE%E2 Одна из ссылок: http://www.firststeps.ru/mfc/stl/r.php?5 - как раз для тебя, первые шаги... |
|
|
|
|
#9 |
|
Форумец
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 41
|
fishca
А где ты в VB видел шаблоны классов!? А я где-то обмолвился об их присутствии в нём? Или ты несколько лет пишешь на плюсах??????? То же самое.. LSL добавил [date]1078181444[/date]: К сведенью: в очередноё студии "шаблоны классов" появятся в бейсике
|
|
|
|
|
#10 |
|
Gross
|
serk Не в шаблонах дело.
|
|
|
|
|
#12 |
|
Серж
Сообщений: 232
Регистрация: 13.02.2004
Возраст: 44
|
Я думаю стоит немного всех просветить зачем мне это нужно.
Задача: Нуна создать класс который бы одновременно мог работать как с int так и с float. Пишем класс template <class T> class ...... а далее легко изменяем T на int или float не переписывая целиком все методы и прочее. Присоединяем h файл к проекту и работаем с классом. Но тут всплывает как раз синтаксис С++ и компиллятор ругается. |
|
|
|
|
#14 |
|
Форумец
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 41
|
zic
Читай просвещение serk'а. ![]() В VB.NET, операция приведения типа, а точнее упаковка и распаковка типа, иногда стоит дорого. "Шаблоны", (в .NET они будут называться "Джинерики", внутреннее устройство и функционирование отличается от си++ - "шаблонов") избавят от лишнего оверхединга... |
|
|
|
|
#16 |
|
Gross
|
serk Приведи полностью сообщение компилятора.
|
|
|
|
|
#17 |
|
Серж
Сообщений: 232
Регистрация: 13.02.2004
Возраст: 44
|
Привожу что есть
<code .h>template <class T> class TListMy { private: typedef struct List{T Number;List* Next;}*pList,List; int How; pList First; pList Last; public:TListMy(); ~TListMy(); bool Add(T Chislo); T GetEl(int Number); int GetHow(); void Clear();}; #endif</code .h> то было в хедере а эт ужо описание cpp(привел один остальное аналогично): <code .cpp>template<class T>int TListMy<T>::GetHow(){return How;}</code .cpp> Далее инклудим в другом cpp файле и при комплилле выдает <Error>[Linker Error] Unresolved external 'TListMy<int>::GetHow()' referenced from C:\BUILDER\BCPP6\PROJECTS\TLIST\UNIT1.OBJ</Error> Усе вроде? Что ему нужно? Мож как то эт шаблон описывать надо по особому? |
|
|
|
|
#19 |
|
Gross
|
serk Компилятор не находит реализацию функции "GetHow()". Ты в cpp подключил заголовочный файл?
|
|
|
|
|
#20 |
|
Форумец
Сообщений: 334
Регистрация: 14.04.2003
Возраст: 44
|
serk
Описание и код темплейта должен быть в .h файле. Т.е. template<class T>int TListMy<T>::GetHow(){return How;} и ему подобное должно лежать в .h файле. |
|
|
|
|
#22 |
|
Gross
|
RomanPshenichny Разве? По-моему, объявление и реализация темплейта не обязательно в одном заголовочном файле должны быть.
Grossmeister добавил [date]1078690602[/date]: Да, действительно так, см. стандарт ANSI C++ (1997), п. 14.5.2 |
|
|
|
|
#23 |
|
Серж
Сообщений: 232
Регистрация: 13.02.2004
Возраст: 44
|
Вы занете пробовал тока что включение в хедер не помогло. Я вот что не пойму почему он ругается именно на obj файл того модуля к которому я подключаю хедер с описанием моего шаблона (шаблон и прога находятся в разных модулях).
serk добавил [date]1078691904[/date]: А ларчит просто открывался просто снял в меню project->options->C++-> templates галочку со слова external и усе заработало. Теперь другие ошибки появилися но это дело наживное. |
|
|