T.Error Geschrieben 27. Oktober 2009 Geschrieben 27. Oktober 2009 moin zusammen. ich hätt mal ne frage eine template-klasse betreffend: ich möchte gern eine funktion wie folgt definieren: template <class T> void LIST<LOAN<T> >::insertLoan(...) {...} dabei sind sowohl LIST als auch LOAN eine template-klasse. nun habe ich aber das problem, dass ich nicht weiß wie ich diese funktion in der LIST-klasse (ich bin der meinung, dass diese dort hinein muss) deklariert werden muss. so auf jeden fall nicht: template <class T> class LIST { ... public: void insertLoan(...); } ... ich bin der meinung, dass ich die lösung in den letzten tagen irgendwo schonmal gesehen hab. nur ist diese auch nach stundenlangem googlen nicht wieder auffindbar :old grüße TechnichalError Zitieren
Klotzkopp Geschrieben 27. Oktober 2009 Geschrieben 27. Oktober 2009 nun habe ich aber das problem, dass ich nicht weiß wie ich diese funktion in der LIST-klasse (ich bin der meinung, dass diese dort hinein muss) deklariert werden muss.Wenn sich diese Methode anders verhalten soll als LIST<T>::insertLoan, brauchst du eine partielle Spezialisierung der LIST-Klasse für LOAN<T>-Templateparameter: template <class T> class LIST<LOAN<T> > { ... public: void insertLoan(...); }[/code] Es riecht aber ein wenig nach kaputtem Design. Eine Containerklasse sollte sich nicht für bestimmte Elementtypen anders verhalten. Du hast leider die Parameter für insertLoan nicht angegeben. Wenn da ein LOAN<T> dabei ist, wäre vielleicht eine einfache Überladung besser als eine Spezialisierung der ganzen Klasse. Zitieren
T.Error Geschrieben 28. Oktober 2009 Autor Geschrieben 28. Oktober 2009 hm stimmt. denkfehler meinerseits. ich kann dafür natürlich auch die normale insert-funktion der klasse LIST benutzen ... template <class T> void LIST<T>::insertElem(T* pI); danke für den denkanstoß ... ne lösung kann manchmal so trivial sein grüße TError Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.