Необоснованный 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()'

Такое ощущение что шаблоны не работают, кто знает раскажите что я не так сделал.


Ответы (0 шт):