Templates
-
Fast richtig
Dein int-Zeiger muss natürlich auch auf Objekte des Typs T zeigen!oh da war jemand schneller...
Irgendwie finde ich das ziemlich merkwürdig. Das passiert so oft! Die Frage stand 40 Minuten im Raum und rtur und ich schreiben fast gleichzeitig eine Antwort. Komisch

-
Besser?
template<class T>
class list
{
public:
int getcount(void);
void init();
int additem(T&);
T& getitem(int);
private:
int count;
T *ilist;
};
-
Wenn getitem einen int-Index erwartet und ich nix übersehen hab, stimmts jetzt

Das nächste mal aber bitte cpp-Tags verwenden:bla bla
-
Geht klar...
Danke.
-
öhm irgendwie vermisse ich hier Destruktor, Copykonstruktor und die Überladung des =-Operators (ich gehe mal stark davon aus, dass du die brauchst für dein T * ilist) und statt der getitem-Methode wäre außerdem eine (zusätzliche) Überladung des []-Operators hübscher

-
Checker&Murckser schrieb:
öhm irgendwie vermisse ich hier Destruktor, Copykonstruktor und die Überladung des =-Operators (ich gehe mal stark davon aus, dass du die brauchst für dein T * ilist) und statt der getitem-Methode wäre außerdem eine (zusätzliche) Überladung des []-Operators hübscher

Das war aber nicht in der Aufgabe gefordert wenn ich richtig sehe. Recht hast du natürlich, aber ich glaube wir sollten niemanden fürs erste Überfordern

cu André
-
Hmm mal nen paar Tips dran geschrieben:
template<class T> class dynamic_array // list passt nicht ganz. // Eine list hat in der Informatik eine // etwas andere Bedeutung. { public: dynamic_array(); // Anstelle von void init. ~dynamic_array(); // m_data muss wieder freigegeben // werden! public: // - std::size_t weil es der Datentyp des Standards für Größen ist. // - const, da du nichts am Objekt veränderst // - inline, da du nur eine Variable zurückgibst. std::size_t size() const { return m_size; } public: // - push_back um es Leuten, die mit dem Standardarbeiten leichter // zu machen. Vgl. std::vector // - std::size_t, da der Index niemals negativ ist. // - T const&, da man mit Kopien arbeitet, damit der Aufrufer sich // nicht darum kümmern muss ob das hinzugefügte Objekt noch gültig // ist. std::size_t push_back(T const&); // - at um es Leuten, die mit dem Standardarbeiten leichter // zu machen. Vgl. std::vector // - eine const und eine nicht const Version um übergabe einer const // Ref. usw. möglich zu machen. // - Bei out_of_range Exception werfen! T& at(std::size_t); T const& at(std::size_t) const; // - Einen Index-Operator um einfachen Zugriff wie bei normalen Array // zu ermöglichen. // - Ebenfalls const. Version und nicht-const. Version. // - KEINE out_of_range Exception werfen! (vgl. std::vector) T& operator[](std::size_t); T const& operator[](std::size_t) const; private: std::size_t m_size; // std::size_t, da die Größe nicht negativ sein kann. T* m_data; };
-
Der Link in deiner Signatur geht nicht
-
Der obere? Ja ich weiß ... hab den Server vor nicht allzu langer Zeit vom Netz genommen. Werde die Seite noch umlegen auf einen anderen Server ...
-
Nein der untere. Es gibt kein "/new"
-
Ok hast recht ^^ Ist etwas alt ^^