Хочу написать класс для матриц, но почему то вылетает ошибка линковки - Неопределённая ссылка на «matrix::matrix(int, int, std::vector >&&)
Вот main.cpp:
#include "matrix.hpp"
#include <vector>
int main()
{
std::vector<int> vec{1,2,3,4};
matrix<int> mat(2,2,std::move(vec));
return 0;
}
Вот matrix.cpp
#include "matrix.hpp"
#include <algorithm>
template<typename Type>
matrix<Type>::matrix(int m,int n,std::vector<Type>&&data){
if(m*n!=data.size())
{
throw "Error: Bad Size";
}
auto curentPos=data.begin();
for(int i=0;i<m;i++){
std::copy(curentPos,curentPos+n,this->data[i].begin);
curentPos+=n;
}
}
Вот matrix.hpp
#ifndef MATRIX
#define MATRIX
#include <vector>
template<typename Type>
class matrix{
private:
int m;
int n;
std::vector<std::vector<Type>> data;
public:
matrix(int m,int n,std::vector<Type>&&data);
};
#endif /* MATRIX */
А вот Makefile:
all: compile
rm {main.o,matrix.o}
compile: main.o matrix.o
clang++ main.o matrix.o -std=c++11 -O -o main
main.o: source/main.cpp
clang++ source/main.cpp -I/home/dima/Project/CPP/app/ -c
matrix.o: source/matrix.cpp
clang++ source/matrix.cpp -I/home/dima/Project/CPP/app/ -c