#ifndef GenericArrayH #define GenericArrayH template class GenericArray { private: protected: size_t items; T **data; void Initialize(size_t initialSize) { this->data = (T **)malloc(items * sizeof(T *)); this->items = 0; } public: GenericArray() { this->Initialize(0); } GenericArray(size_t initialSize) { this->Initialize(initialSize); } ~GenericArray() { Clear(this); } int Count() { return items; } void Append(T element) { items += 1; data = (T**)realloc((void *)data, items * sizeof(T*)); data[items-1] = new T(element); } void Clear(GenericArray *a) { for (int i = 0; i < items; i++) { free((a->data[i])); } free(a->data); a->data = nullptr; a->items = 0; } }; #endif