Nichtaufgeloestes externes Symbol seit benutzung von Templates

Hallo,

noch zwei Anmerkungen.

  • Wenn man trotzdem wie gewohnt Deklaration und Definition der Template-Klasse voneinander trennen will, kann man folgendes Idiom benutzen:
C++:
// liste.h
// Deklaration

template<class T>
class liste {
  // ...
};

#include "liste_impl.h" // Definitionen einbinden
C++:
// liste_impl.h
// Definitionen

template<class T>
liste<T>::liste() {
  // ...
}

// :::
  • Man kann außerdem auch ohne diesen Trick Header und Implementierung trennen, indem man die Template-Klasse in der Implementierung explizit instantiiert:
C++:
template class liste<int>;
template class liste<float>;
// :::
Das ergibt aber nur Sinn, wenn die Liste der möglichen Template-Typen im Voraus bekannt und in ihrer Anzahl begrenzt ist.


Grüße,
Matthias
 
Zurück