default template arguments Problem
-
Ich hab eine Klasse so definiert (Volkards Tutorial)
template<class T, class C = DefaultComparator<T> > class SortedArray { . . public: int Find(const T &toFind); . . };Wie definiere ich die Funktion, wenn ich dies NICHT im Klassenrumpf selbst tun möchte? Ich habs schon auf mehrere Arten versucht, z.B:
template<class T, class C = DefaultComparator<T> > int SortedArray<T, C>::Find(const T &toFind) { bla }template<class T, class C = DefaultComparator<T> > int SortedArray<T, C<T> >::Find(const T &toFind) { bla}und so weiter .... Wie muss ich das hier in den < > schreiben, an genau dieser Stelle:
int SortedArray<T, ????? >::Find(const T &toFind)Da will nämlich nichts klappen

default template arguments may not be used in function templates 'C' is not a templateDas mit dem "'C' is not a template" kam vorher nicht, dafür massiv andere Fehlermeldungen ...
Bitte helft mir, in dem Beispielprogramm wurden alle Funktionen immer nur inline definiert -.-
-
Defaultparameter mußt du immer nur EINMAL definieren, danach findet der Compiler sie von alleine wieder:
template<typename T, typename C = Compare<T> > class SortedArray { public: int Find(const T&) const; ... }; template<typename T,typename C>//hier kein Defaultwert inline int SortedArray<T,C>::Find(const T& val) const { ... return 0; }
-
Ahhh daran lags, super, danke!!