Шаблоны с вектором векторов 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*> > > >)'
Подскажите, пожалуйста, что нужно поменять в объявлении (вызове) функции, чтобы все работало.