template не работает???
Беру Страуструпа, открываю, списываю приведенный пример:
// ***файл stack.h:
#ifndef templatetestH
#define templatetestH
template<class T> class Stack
{
T *v;
int max_size;
int top;
public:
class Underflow{};
class Overflow{};
Stack(int s);
~Stack();
void push(T);
};
#endif
// ***файл stack.cpp
#include "stack.h"
template<class T> Stack<T>::Stack(int s)
{
max_size=100;
v=new T[max_size];
}
//.. реализация
Все склеиваю в проект, в функции main просто создаю объект :
Stack<double> f(5);
Компилируется, но не линкуется. Линкер говорит, что Unresolved external 'выдов конструктора'
Ctrl+X всю реализацию из .cpp файла, Ctrl+V в конец файла .h (до endif). Все работает.
В чем проблема???
Почему линкер не видит cpp файла, который добавлен в проект???
PS Перезагрузка не помогает ;))
PPS C++ Builder 2006
На сегодняшний день подавляющее большинство компиляторов (в том числе и Builder) не поддерживает раздельную компиляцию шаблонов.
Обсуждается чуть ли ни каждый месяц. Сколько можно?