Задать вопрос
@using_namespace_boring

Ошибка линковщика — Неопределённая ссылка на..., что делать?

Хочу написать класс для матриц, но почему то вылетает ошибка линковки - Неопределённая ссылка на «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
  • Вопрос задан
  • 1260 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Шаблон должен быть реализован в заголовочном файле *.h
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы