Использование шаблонных классов в функции

Выходит ошибка при использовании класса, к которому подключен 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


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