Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Экспорт шаблонов


Автор: dbcoder 31.10.2005, 20:40
Здравствуйте.

Когда я выписываю в заголовочном файле шаблон template функции или класса, то компилятор выдаёт следующее:

[Linker error] Unresolved external 'void function<int>(int)' referenced from C:.../TEST.OBJ

Здесь троеточием я заменил путь к файлу. Предполагается, что в .H файле

template <class Type> void function(Type x);

И функция реализуется в .cpp и является пустой.
Если компилятор ругается из-за того, что функция является шаблоном, то как это обойти?

Автор: DeadSoul 31.10.2005, 21:10
Весь шаблон в h-файл

Автор: threef 31.10.2005, 21:26
Шаблон не компилируется, он должен полностью присутствовать в header. Посмотри <vector>.

Автор: np9mi7 31.10.2005, 22:33
Цитата
Шаблон не компилируется, он должен полностью присутствовать в header. Посмотри <vector>.
, он должен находиться в одной единице трансляции с использующим шаблон кодом если быть точнее.

Автор: Daevaorn 1.11.2005, 10:36
http://www.gamedev.ru/faq/?id=30

Автор: pablo 1.11.2005, 21:17
В стандарте языка, экспортирование шаблонов существует, но его реализовали буквально пара компаний, так что придётся довольствоватся тем что есть.

А также, использование экспортирования шаблонов крайне не рекомендуемо(даже если это реализовано и поддерживается конпилятором)

Автор: Daevaorn 1.11.2005, 21:50
Цитата(pablo @ 1.11.2005, 21:17)
А также, использование экспортирования шаблонов крайне не рекомендуемо(даже если это реализовано и поддерживается конпилятором)

А почему?

Автор: DeadSoul 1.11.2005, 22:27
Цитата(pablo @ 1.11.2005, 21:17)
стандарте языка, экспортирование шаблонов существует, но его реализовали буквально пара компаний, так что придётся довольствоватся тем что есть.

http://forum.sources.ru/index.php?showtopic=118318&view=findpost&p=887458

Автор: CPlusPlusFAN 2.11.2005, 18:12
А зачем нужны шаблоны, если ни один из современных компиляторов не поддерживает их экспорт?

Автор: Neitron 2.11.2005, 18:28
CPlusPlusFAN
Ты наверное немного не понел, чего делать нельзя....

Автор: Guest 2.11.2005, 18:29
Отсутствие экспортирования означает что интерфейс и его реализация для шаблона должны находиться в одном файле.

А ответ ---
Затем, чтобы их конкретизовывать во вне хэдера.
Затем, зачем собственно они были созданы.

Автор: comcon1 2.11.2005, 18:30
Сорри - это был я.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)