class -> template
Ales Bardorfer
alesb at robo.fe.uni-lj.si
Thu Apr 26 02:16:42 CEST 2001
Napisal sem en class, ki sem ga zelel spremeniti v template class.
class doubleMatrix {
...
doubleMatrix(int nr, int nc) {...}
~doubleMatrix() {...}
double& operator () (const int r, const int c);
};
double &
doubleMatrix::operator () (const int r, const int c) {...}
To sem spremenil v:
template <class T>
class Matrix
{...
Matrix(int nr, int nc) {...}
~Matrix() {...}
T & operator () (const int r, const int c);
};
template <class T>
T &
Matrix<T>::operator () (const int r, const int c) {...}
Obe varianti sta na dveh datotekah (matrix.h in matrix.cpp),
mat_test.cpp pa je testni program.
Prvi primer deluje brez problemov. Drugi (template) pa javi napako ob
linkanju:
g++ -c -I. mat_test.cpp -o mat_test.o
g++ -c -I. matrix.cpp -o matrix.o
g++ mat_test.o matrix.o -o mat_test
mat_test.o: In function `main':
mat_test.o(.text+0x26): undefined reference to
`Matrix<double>::operator()(int, int)'
mat_test.o(.text+0x48): undefined reference to
`Matrix<double>::operator()(int, int)'
collect2: ld returned 1 exit status
make: *** [mat_test] Error 1
Kje sem ga polomil?
lp,
Ales
More information about the lugos-prog
mailing list