Пишу класс для работы с матрицами. Определения функций расположены в файле MyMatrix.h, реализация в MyMatrix.cpp, функция main в файле test.cpp.
MyMatrix.h
#include <iostream>
using namespace std;
template <class T>
class MyMatrix
{
private:
T **contents;
int rows;
int cols;
public:
MyMatrix(void);
~MyMatrix(void);
friend ostream& operator<<(ostream& os, const MyMatrix & m);
};
MyMatrix.cpp
#include <iostream>
#include "MyMatrix.h"
using namespace std;
template <class T>
MyMatrix<T>::MyMatrix(void)
{
}
template <class T>
MyMatrix<T>::~MyMatrix(void)
{
for(int i = 0; i < rows; i++)
free(contents[i]);
free(contents);
}
test.cpp
#include <iostream>
#include "MyMatrix.h"
using namespace std;
int main()
{
MyMatrix<int> m;
return 0;
}
При этом возникает ошибка: "error LNK2019: unresolved external symbol "public: __thiscall MyMatrix<int>::MyMatrix<int>(void)"".
Почему линкер не может найти определение конструктора?