Misschien is dit een basic vraag, maar templates blijven lastig.
Ik heb een template klasse
en nog een
In de TMatrix klasse heb ik een methode die als argument een (constante) referentie krijgt naar een object van de TQuaternion klasse:
Als ik die methode inline defineer is er geen probleem maar als ik hem buiten de klasse defineer krijg ik een linker fout
De linker geeft een fout in de trant van 'ik kan de implementatie van die methode niet vinden'. Ik heb meerdere methoden van de template klassen buiten de klasse gedefineerd en die gingen goed. Maar die hadden dan ook geen template klasse als argument.
Het enige dat ik kan bedenken is dat de methode die ik buiten de klasse defineer anders is dan de methode die ik heb gedeclareerd. Maar als dat het geval is, wat doe ik dan fout?
Ik heb een template klasse
C++:
1
| template <class T> class TMatrix |
en nog een
C++:
1
| template <class T> class TQuaternion |
In de TMatrix klasse heb ik een methode die als argument een (constante) referentie krijgt naar een object van de TQuaternion klasse:
C++:
1
2
3
4
5
| // inline void operator=(const TQuaternion<T> &q) { ... } |
Als ik die methode inline defineer is er geen probleem maar als ik hem buiten de klasse defineer krijg ik een linker fout
C++:
1
2
3
4
5
| // buiten klasse declaratie template <class T> void TMatrix<T>::operator=(const TQuaternion<T> &q) { ... } |
De linker geeft een fout in de trant van 'ik kan de implementatie van die methode niet vinden'. Ik heb meerdere methoden van de template klassen buiten de klasse gedefineerd en die gingen goed. Maar die hadden dan ook geen template klasse als argument.
Het enige dat ik kan bedenken is dat de methode die ik buiten de klasse defineer anders is dan de methode die ik heb gedeclareerd. Maar als dat het geval is, wat doe ik dan fout?