Необоснованный undefined reference
Создал Шаблонный класс-контейнер описал нужные методы а при его создании и использовании выдает андефайн референс.
Заголовок клсса-шаблона
#include "myiterator.h"
namespace alb{
typedef int index;
template<typename ValueType>
class MyContainer
{
size_t size;
ValueType* info;
public:
...
//vector-like medoths
int push_back(const ValueType&);
int push_front(const ValueType&);
...
//Constructs
MyContainer();
MyContainer(const ValueType&);
MyContainer(ValueType*);
MyContainer(const MyContainer&);
//Destructor
~MyContainer();
//opers
ValueType& operator[] (const size_t&);
};
}
Его реализации СПП
#include "mycontainer.h"
#include <malloc.h>
using namespace alb;
//Cons|Des-tructors
template <typename ValueType>
MyContainer<ValueType>::MyContainer()
{
this->size = 0;
this->info = nullptr;
}
template <typename ValueType>
MyContainer<ValueType>::MyContainer(const ValueType &obj)
{
this->size = 0;
this->push_back(obj);
}
template <typename ValueType>
MyContainer<ValueType>::MyContainer(ValueType* arr)
{
this->info = nullptr;
this->size = _msize(arr)/sizeof(ValueType);
for(size_t i = 0; i < this->size; ++i)
this->push_back(arr[i]);
}
template <typename ValueType>
MyContainer<ValueType>::MyContainer(const MyContainer &obj)
{
this->info = nullptr;
this->size = obj.size;
for(size_t i = 0; i < this->size; ++i)
this->push_back(obj[i]);
}
template <typename ValueType>
MyContainer<ValueType>::~MyContainer()
{
delete this->info;
}
...
template <typename ValueType>
int MyContainer<ValueType>::push_back(const ValueType &obj)
{
ValueType* temp;
temp = new ValueType [this->size + 1];
for(size_t i=0; i < this->size; ++i)
temp[i] = this->info[i];
temp[this->size] = obj;
delete this->info;
this->info = temp;
this->size++;
return 1;
}
И то где он используется
...
class MWindow : public QMainWindow
{
Q_OBJECT
alb::MyContainer<QWidget*> data;
...
using namespace alb;
MWindow::MWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MWindow)
{
ui->setupUi(this);
this->data.push_back(new QWidget());
Выдает ошибки:
mwindow.cpp:6: ошибка: undefined reference to `alb::MyContainer<QWidget*>::MyContainer()'
mwindow.cpp:10: ошибка: undefined reference to `alb::MyContainer<QWidget*>::push_back(QWidget* const&)'
mwindow.cpp:6: ошибка: undefined reference to `alb::MyContainer<QWidget*>::~MyContainer()'
mwindow.cpp:16: ошибка: undefined reference to `alb::MyContainer<QWidget*>::~MyContainer()'
Такое ощущение что шаблоны не работают, кто знает раскажите что я не так сделал.