Можно ли создать универсальный класс, который действует как динамический массив объектов любого типа?
Я хочу класс, который в основном делает это:
MyObj * obj1 = new MyObj();
MutableArray * arr = new MutableArray();
arr->addObject(obj1);
MyObj * obj2 = arr->objectAtIndex(0);
// obj1 and obj2 now points to the same object
Вот как будет выглядеть код. Я знаю, что это не работает, но вы поняли.
Что мне нужно, это какой-то общий тип для объекта. Сам массив состоит только из указателей, поэтому размер объекта не должен иметь значения, верно?
Итак, возможно ли это?
.h-файл
class MutableArray
{
private:
class * objs;
int length;
int capacity;
public:
MutableArray();
void add(class * obj);
class objectAtIndex(int index);
};
СРР-файл
MutableArray::MutableArray()
{
length = 0;
capacity = 0;
}
void MutableArray::add(class * obj)
{
if(length >= capacity)
{
this->enlarge();
}
objs[length] = obj;
length++;
}
void MutableArray::enlarge()
{
int newCapacity = (capacity * 2)+1;
class * newObjs = new class[newCapacity]
if(capacity != 0)
{
delete [] objs;
}
objs = newObjs;
capacity = newCapacity;
}
class MutableArray::objectAtIndex(int index)
{
return objs[index];
}