Ableiten einer Template-Klasse
-
Hi,
ich hab da mal eine Frage:
Und zwar bräuchte ich eine zusätzliche Suchfunktion für einen CArray. Dazu bräuchte ich ja ne Ableitung der Klasse. Da das aber eine Template-Klasse ist, schaffe ich es nicht, sie abzuleiten.Kann man eine Ableitung einer Template-Klasse machen und wenn ja wie?
Schon mal ein schönes neues Jahr
Squeegee
-
- es ist nicht zwingend einzusehen, warum eine zusätzliche suchfunktion es erforderlich machen sollte, eine neue klasse dafür zu schaffen. gerade funktionen, die den container nicht verändern können (und sollten) i.d.R. als non-member funktionen implementiert werden.
- eine template klasse ist eine ganz normale klasse (beachte den unterschied zwischen template klasse und klassentemplate), das ganze könnte so aussehen:template<typename T> class MyArray : public CArray< T > { /* ... */ };
-
Hi,
gerade funktionen, die den container nicht verändern können (und sollten) i.d.R. als non-member funktionen implementiert werden.
Uups, da fehlt was in meiner Frage, ich muss den Array nämlich auch noch sortieren.
Und unglücklicherweise nicht nur einen sondern mehrere Arrays, deswegen dachte ich, eine eigene Klasse, die das von vorneherein kann, wäre nicht schlecht.
Und nebenbei brauche ich noch eine Methode, mit der ich den Array, der aus Strukturen besteht, nach Elementen aus der Struktur absucht, das scheint die Klasse CArray nämlich nicht zu können.Grüße Squeegee
-
Gibt es bereits!
Nimm einfach die qsort funktion. Der Kannst du einen Funktionspointer mitgeben. In dieser Funktion kannst du deinen eigenen Suchalgorithmus schreiben.
So in etwa:
Aufruf
Array array[5]; ::qsort(array[0], 5, sizeof(Array), SortFunc);
Funktion
static int SortFunc(const void *ptr1, const void *ptr2) { Hier nun dein sort algorithmus!!! }
Schau dir mal die Beschreibung von qsort an: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_qsort.asp
codeman
-
Hi Codeman,
in diesem Fall... Werd ich wohl das Rad nicht nochmal erfinden...vielen Dank und ein schönes Neues
Squeegee
-
Wünsch ich dir auch Squeegee :p
codeman