Шаблоны с вектором векторов QPushButton*, QFrame*

Стоит задача разделить функцию в два файла: объявление и реализацию (.h, .cpp).

Так выглядит функция сейчас:

template<class T>
void clean_mem(std::vector<std::vector<T*>> vec){
    for(size_t i=0; i<vec.size(); ++i)
        for(size_t j=0; j<vec[i].size(); ++j)
            if(vec[i][j])
                delete vec[i][j];
}

Вызов функции сейчас:

vector<vector<QPushButton*>> buttons = vector<vector<QPushButton*>>(5);
for(int i; i<5; i){
    buttons[i] = vector<QPushButton*>(10);
    for(int j=0; j<10; ++j){
        buttons[i][j] = new QPushButton();
    }
}
clean(buttons);

Если я делю ее в два файла так:

func.h

#ifndef FUNCS_H
#define FUNCS_H

#include <vector>
template<class T>
void clean_mem(std::vector<std::vector<T*>> vec)

#endif // FUNCS_H

func.cpp

#include "func.h"

void clean_mem(std::vector<std::vector<T*>> vec){
    for(size_t i=0; i<vec.size(); ++i)
        for(size_t j=0; j<vec[i].size(); ++j)
            if(vec[i][j])
                delete vec[i][j];
}

Компилятор говорит:

undefined reference to `void clean_mem<QPushButton>(std::vector<std::vector<QPushButton*, std::allocator<QPushButton*> >, std::allocator<std::vector<QPushButton*, std::allocator<QPushButton*> > > >)'

Подскажите, пожалуйста, что нужно поменять в объявлении (вызове) функции, чтобы все работало.


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