是否有可能使泛型类充当任何类型的对象的动态数组?
我想要一个基本上可以做到这一点的类(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<>
。