Выходит ошибка при использовании класса, к которому подключен template. Как реализовать, чтобы в функции, которая декларирована в другом header файле, имелась возможность использовать экземпляр этого класса?
matrix.h
#pragma once
template<typename T>
class Matrix {
private:
//some parameters
public:
//some functions
}
matrix.cpp
#include "matrix.h"
//some functions...
template class Matrix<lld>;
template class Matrix<ll>;
template class Matrix<int>;
files.h
#pragma once
#include "matrix.h"
template <typename T>
void readBinaryFile(const char*, Matrix<T>&);
files.cpp
template <typename T>
void readBinaryFile(const char* filename, Matrix<T>& matrix) {
// без логики, пустышка
return;
}
main.cpp
#include "matrix.h"
#include "files.h"
int main() {
Matrix<long long> mat = Matrix<long long>(2, 2);
const char* filename = "text.dat";
readBinaryFile(filename, mat);
return 0;
}
При компиляция выходит данная ошибка:
Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "void __cdecl readBinaryFile<__int64>(char const *,class Matrix<__int64> &)" (??$readBinaryFile@_J@@YAXPEBDAEAV?$Matrix@_J@@@Z) referenced in function main Project5