是否有可能使泛型类充当任何类型的对象的动态数组?
我想要一个基本上可以做到这一点的类(class):

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);
};

cpp文件
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];
}

最佳答案

这是已经发明的,称为std::vector<>

10-07 12:03