// PointerArray.h: interface for the CPointerArray class. // // Die von CArrray abgeleitete Klasse CPointerArray, // stellt ein eindimensionales Feld dar, indem Zeiger // beliebigen Types gespeichert werden koennen. // Die Besonderheit liegt darin, dass, beim Loeschen eines Elementes // (gespeicherten Zeigers), der Speicherbereich, den das Objekt, // auf den der Zeiger zeigt, belegt, wieder freigegeben wird. // Kleines Bsp.: // Zeiger A zeigt auf das Objekt B, das im Speicher 200 Byte belegt. // Zeiger A wird in diesem Array gespeichert. // Beim Loeschen des Zeigers A wird auch das Objekt B geloescht. // Dieses vorgehen ist eine einfache Form von "garbage collection" // ////////////////////////////////////////////////////////////////////// #pragma once #include // includes CArray template class CPointerArray : public CArray { public: void RemoveAll() { // Leeren der gesamten Arrays. for (int i=0; iGetSize(); i++) // Das Feld ganz durchlaufen... delete(this->GetAt(i)); // ...und alle Speicherbloecke wieder freigeben. CArray ::RemoveAll(); // Alle gespeicherten Zeiger aus dem Feld loeschen. } void RemoveAt(int nIndex, int nCount = 1) { // Loeschen von nCount Elementen aus dem Array. for (int i=nIndex; iGetAt(i)); // ...und die Speicherbloecke wieder freigeben. CArray ::RemoveAt(nIndex, nCount); // } };