Как вынести метод шаблонного класса из хэдера в cpp ?
Ответ
Необходимо помнить, что шаблон порождает код класса только тогда, когда вы употребляете этот шаблон в программе с конкретными параметрами. Это означает, что нельзя скомпилировать модуль содержащий просто шаблон класса. Шаблон — это еще не тип (в C#, напротив, угловые скобки говорят о типе Generic). Таким образом, реализация метода должна быть в том модуле, где этот метод используется, иначе получите Unresolved symbol. Вот пример, который скомпилировался в MSVS 2008:
foo.h:
#pragma once
template
main.cpp
#include "foo.h"
template
int main(int argc, char *argv[])
{
Foo
Очевидно, в данном примере это равносильно варианту, когда реализация метода расположена в заголовочном файле.
А вообще, если у Вас возникла такая задача, стоит задуматься, на верном ли Вы пути, так сказать :)
Комментариев нет:
Отправить комментарий