2014 dxdy logo

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

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




 
 C++. Templates - определение и реализация.
Сообщение27.04.2011, 21:26 
Доброго времени суток!

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

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

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

 
 
 
 Re: C++. Templates - определение и реализация.
Сообщение27.04.2011, 21:51 
Хоть стандарт и декларирует возможность внешней реализации темплейтов, очень мало компиляторов это поддерживают (необходим специализированный линкер, с вызовом компилятора для использованных темплейтов). Поэтому приходится код темплейтов вставлять в хедер, часто не напрямую, а в отдельный файл с особым расширением типа .tcc или .inl, который включается хедером.

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

 
 
 
 Re: C++. Templates - определение и реализация.
Сообщение20.05.2011, 06:53 
код то хотя бы уж приведите

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group