【发布时间】:2011-12-18 00:07:44
【问题描述】:
我在 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,以后它应该存储 object1、object2 和 object3。
Xyz **someName;
int numberOfElements = 0;
问题从这里开始。 someName 是空的,所以我想在其中添加一些内容。但我不知道如何使用给定数量的指针创建一个新数组,以将旧元素复制到其中。这当然行不通:
Xyz **someNameTemp = new Xyz[numberOfElements+1];
知道调整大小功能的外观吗? 感谢您的帮助。
【问题讨论】:
-
¤ 你没有数组。声明“someName 为空”是错误的。因此,谈论调整大小是没有意义的。这声明并初始化了一个合适的数组:
Xyz* array[] = {object1, object2, object3};。它无法调整大小。顺便说一句,无论谁宣布标准库对您来说都是禁区,他都不是这门学科的好老师。考虑自学。干杯&hth., -
但是创建一个新的临时数组,重写所有对象然后切换指针怎么样?
-
@AlfP.Steinbach,我不同意 - 了解基础知识和 STL 都很重要。 只学习一个或另一个不是一个好主意,但最终你必须先学习一个,然后先学习基础知识是一个非常好的主意。
-
@bdonlan:你有很多东西要学。你说先学习基础知识是个好主意,这在本质上没有任何错误,但这种说法不与以合理的速度学习并且没有不合理的斗争相冲突。但是,正如您可能了解到的那样,不使用标准库与此相冲突。无论如何,不要相信我的话。给自己买一本好书(这不会让你不必要地纠结于细节),例如Koenig & Moo 的“Accelerated C++”,或在 SO 上查看 C++ 书籍列表常见问题解答。干杯&hth.,
标签: c++ arrays pointers dynamic