Element dynamischer liste hinzufügen?
-
Hi, ich wollte mal meine eingene Klasse erstellen, die wie ein simpler, dynamisher array funktioniert. Leider geht's schon zu begin schief: Ich kriege krumme werte in die liste, und ich hab' keinen schimmer warum. Wie mache ich also, dass ein element einfach hinzugefügt werden kann ?
template<class T> class LIST { public: LIST() { count = 0; } void operator << (T elem) { count++; T* nlist = new T[count]; if (!count) for (int i=0; i<count-1; i++) nlist[i] = list[i]; nlist[count] = elem; list = nlist; } T operator [] (int ix) { return list[ix]; } int gsize() {return count}; private: int count; T* list; };
-
Der Fehler ist bei "if(!count)" zu suchen.
Du zählst den Zähler hoch, und kopierst das Array aber nur wenn count false ist also !=0!
-
und was soll ich ändern ?
Wenn ich das einfach weglasse kireg ich eine access violation
-
Ein weiteres Problem ist, dass du an index 0 nie nen Wert reinschreibst!
Indize bei Arrays starten mit i=0. Beim ersten list << wert zählst du count auf 1, dein Array ist noch nicht initialisiert, an index=0 existiert noch kein Wert. Wenn du nun das Array kopierst wird auf einen ungültigen Wert zugegriffen -> access violation.
SOlltest du Problem haben dir das vorzustellen, mal dir eine Skizze auf, wie dein Objekt aussschaut am Anfang, und nachdem du Werte hizufügst.BTW: EIn Debugger sagt dir das. Schau dass du dich bald damit anfreundest, dass du bei jedem unerklärlichen Fehler nicht Stunden investieren und dann ins Forum posten musst
