0

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

Harry
  • 221,325
Boro8ey
  • 75
  • 1
    Реализация шаблонных функций надо делать внутри заголовочных файлов. – AlexGlebe Feb 13 '24 at 11:25

0 Answers0