调整具有相同基类的对象上的指针数组的大小
Resizing array of pointers on objects with the same base class
我在C++有问题,我找不到答案。我有一些课程:
class Xyz{
//...
};
class MyClass1: public Xyz{
//...
};
class MyClass2: public Xyz{
//...
};
class MyClass3: public Xyz{
//...
};
如您所见,MyClass1、MyClass2 和 MyClass3 具有相同的基类。现在我想定义一些对象:
MyClass1 *object1 = new MyClass1();
MyClass2 *object2 = new MyClass2();
MyClass3 *object3 = new MyClass3();
之后,我想创建一个动态数组,其中包含指向这些对象的指针(因为我知道这是可能的(和一个保存该数组中元素数量的整数。我将该数组命名为 someName,将来它应该存储对象 1、对象 2 和对象 3。
Xyz **someName;
int numberOfElements = 0;
问题从这里开始。 someName 是空的,所以我想添加一些东西。但是我不知道如何制作一个具有给定位置的新数组,以便指针将旧元素复制到其中。这当然不起作用:
Xyz **someNameTemp = new Xyz[numberOfElements+1];
知道调整大小功能应该是什么样子吗?感谢您的帮助。
您可以避免所有的麻烦,只需使用std::vector
:
std::vector<Xyz *> pointers;
pointers.push_back(new MyClass1());
pointers.push_back(new MyClass2());
// etc.
[旁注:你应该强烈考虑不使用原始指针;而是使用智能指针,因为它使资源管理变得更加简单。
Xyz **someNameTemp = new Xyz*[numberOfElements+1];
for (int i=0; i<numberOfElements; ++i)
someNameTemp[i] = someName[i];
delete [] someName;
someName = someNameTemp;
++numberOfElements
// someName[numberOfElements - 1] uninitialized
此外,首次创建指针时,请务必对其进行初始化。 要么为 NULL,要么是分配的数组。
相关文章:
- 指向指向字符数组的指针数组的指针
- 通过指向指针数组的指针访问子类的属性
- C++,指针数组,指向双链表中的条目
- 在C++中,如何初始化指向wchar_t*的指针数组(生成wchar_t**)
- C++从函数指针数组调用函数
- 关于指向指针数组的指针
- 将返回值存储在函数指针数组的指针中是如何工作的?
- 将链表转换为指针数组时出错
- C++ 对象指针数组的复制构造函数
- C++ - 循环访问指针数组会导致错误
- 删除指针数组 (C++) 中的元素
- 如何循环访问 cpp 中的函数返回的字符指针数组
- 将函数指针数组中的函数指针作为模板参数传递
- Google Or-Tools Glop:如何创建指向 const 对象的指针数组?
- 具有推导参数的模板函数指针数组变量
- 如何模板化堆栈分配的多态指针数组到接口,包括派生类型的相应点?
- C++指针数组到字符数组中的特定位置
- 如何在C++中复制指针数组的数据
- 初始化类中的指针数组,并在另一个类中检索它
- 尽管直接设置了指针数组,但仍为空