На данный вопрос уже ответили:
// header.hpp
template<typename T1, typename T2> class A
{
T1 a;
T2 b;
public:
A(void);
};
//header.cpp
template<typename T1, typename T2> A<T1, T2>::A(void)
{
...
}
// main.cpp
#include "header.hpp"
int main(void)
{
A<double, double> a;
return 0;
}
// errors : undefined reference to A<double, double>::A(void)
Я что-то неправильно написал. Но что самое страшное: когда я помещаю это все в один файл, внимание, все работает!
компилирование:
1 all: prog
2
3 prog: header.o main.o
4 g++ header.o main.o -g -o prog
5 main.o: main.cpp
6 g++ main.cpp -c -g -o main.o
7 header.o: header.cpp header.hpp
8 g++ header.cpp -c -g -o header.o
9 clean:
10 rm *.o
11 rm prog
Не выносите реализации шаблонов в отдельные файлы!
Это может сработать, но в особых, редких ситуациях.
Весь код шаблона располагайте в заголовочном файле, и будет вам счастье :)
Когда дело имеете с шаблонами, тогда в файл, где находится точка входа, необходимо подключать файл с расширением .сpp, где реализован ваш шаблонный класс.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Эта функция принимает вектор типа char и возвращает числоВ каждой ячейке вектора хранится одна цифра
Всем доброго времени, появилась некоторая необходимость в языке, который я не знаю абсолютноСобственно, по заданию необходимо сделать ввод...
Здравствуйте, прошу подсказкиРаботал с длл с абстрактным интерфейсом, содержащей набор функций для моего приложения