Ho un problema nella compilazione di un programma in C++ in cui utilizzo i template (...o almeno credo che il problema sia dovuto a questo). Io utilizzo Visual Studio 6
Parte del codice è il seguente (diviso su tre file Matrix.h, Matrix.cpp, main.cpp):
/* Matrix.h */
#include <iostream.h>
#include "Vector.h"
template <class T>
class TMatrix {
private:
T **elems;
size_t rows, cols;
public:
TMatrix ();
TMatrix (size_t r, size_t c);
.....
.....
}
/* Matrix.cpp */
#include <iostream.h>
#include "Vector.h"
template <class T>
TMatrix<T>::TMatrix () {
rows = cols = 0;
elems = NULL;
};
template <class T>
TMatrix<T>::TMatrix (size_t r, size_t c) {
cols = c;
elems = new T*[rows = r];
for (r = 0; r < rows; r++)
elems[r] = new T[cols];
};
......
......
/* main.cpp */
#include <iostream.h>
#include "Matrix.h"
void main() {
size_t rows = 5, cols = 5;
TMatrix<double> A(rows, cols);
}
Nel main faccio una semplice chiamata al costruttore di TMatrix.
Quando lo compilo mi viene restituito il seguente errore:
main.obj : error LNK2001: unresolved external symbol "public: __thiscall TMatrix<double>::TMatrix<double>(unsigned int,unsigned int)" (??0?$TMatrix@N@@QAE@II@Z)
Debug/ProvaMatrix.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Non riesco a trovare il problema.
Qualcuno può darmi un consiglio?
Grazie.