Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;,不带Stl的对象数组(来自不同类)&;促进 我想在C++中创建一个数组,它可以保存不同类的对象。_C++_Arrays - Fatal编程技术网

C++;,不带Stl的对象数组(来自不同类)&;促进 我想在C++中创建一个数组,它可以保存不同类的对象。

C++;,不带Stl的对象数组(来自不同类)&;促进 我想在C++中创建一个数组,它可以保存不同类的对象。,c++,arrays,C++,Arrays,这是我家庭任务的一部分,其中一个条件是我不能使用Stl、Boost等。您应该创建基类并从基类派生类。因此,您可以创建数组Base*数组并将所有派生类放在那里。您可以在数组中存储指向void*的指针,并将对象强制转换为void*。但是你不应该这样做 如果可能,您应该从基类派生所有对象,并存储指向Base*的指针。这是解决此问题的更好方法。同一容器是否必须同时容纳相同类型的对象?如果是,它是否必须能够容纳任何类型?如果是这样,您唯一的解决方案就是使用void*并存储指向要存储的对象的指针 如果一个容

这是我家庭任务的一部分,其中一个条件是我不能使用Stl、Boost等。

您应该创建基类并从基类派生类。因此,您可以创建数组
Base*
数组并将所有派生类放在那里。

您可以在数组中存储指向
void*
的指针,并将对象强制转换为
void*
。但是你不应该这样做


如果可能,您应该从基类派生所有对象,并存储指向
Base*
的指针。这是解决此问题的更好方法。

同一容器是否必须同时容纳相同类型的对象?如果是,它是否必须能够容纳任何类型?如果是这样,您唯一的解决方案就是使用
void*
并存储指向要存储的对象的指针


如果一个容器只需要容纳一种类型的对象,那么可以使用模板来实现这一点。如果同一个容器必须容纳不同类型的对象,但您可以限制它所能容纳的类型,那么您可以要求它派生自某个
Base
类,并生成一个
Base*

数组,这是一个问答网站,您的提问水平有点低。从字面上看,这是不可能的,根据定义,数组只能是一个固定类型的对象数组。与此作业相关的课程有哪些?持有不同的对象类是不寻常的,因为您无法统一地处理它们,除非您使用的是继承或模板?这就是你学到的吗?