2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 C++. Templates - определение и реализация.
Сообщение27.04.2011, 21:26 


04/04/11
12
Доброго времени суток!

Такой вопрос: как правильно(с точки зрения стандартов C++) определять и реализовывать шаблон?

Есть такая проблема(и не у меня одного):
Если определять шаблон в файле .h и реализовывать его в .cpp, то линкер выдает ошибку 2019, есть вариант явно инстанцировать шаблон перед реализацией, но это как-то не очень красиво.

Облазил кучу форумов и нигде не нашел(возможно слепой) каноничных решений. Спасибо за внимание.

 Профиль  
                  
 
 Re: C++. Templates - определение и реализация.
Сообщение27.04.2011, 21:51 
Заслуженный участник


04/05/09
4587
Хоть стандарт и декларирует возможность внешней реализации темплейтов, очень мало компиляторов это поддерживают (необходим специализированный линкер, с вызовом компилятора для использованных темплейтов). Поэтому приходится код темплейтов вставлять в хедер, часто не напрямую, а в отдельный файл с особым расширением типа .tcc или .inl, который включается хедером.

Иногда, если темплейтный код слишком большой, или использует внутренние хедеры, можно извратиться и явно инстанциировать темплейт для нескольких наборов параметров, но при этом приходится мириться с тем, что с непредусмотренными параметрами темплейт обломится на этапе линковки, как у Вас и произошло.

 Профиль  
                  
 
 Re: C++. Templates - определение и реализация.
Сообщение20.05.2011, 06:53 


17/05/11
158
код то хотя бы уж приведите

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group