C++ 如何在指针数组中存储不同类的对象

C++ 如何在指针数组中存储不同类的对象,c++,arrays,pointers,C++,Arrays,Pointers,我有三节课。DrawGameComp'和“GameComp”,其中“GameComp”是“DrawGameComp”的基类。我在游戏类中有一个指针数组,它是控制类 GameComp*组件[];从main开始,我必须创建一个游戏的动态实例,并将GameComp和DrawGameComp的新对象添加到GameComp类型的指针数组中 Game Game1(2); Game1.Add(new GameComponent); Game1.Add(new Drawab

我有三节课。DrawGameComp'和“GameComp”,其中“GameComp”是“DrawGameComp”的基类。我在游戏类中有一个指针数组,它是控制类 GameComp*组件[];从main开始,我必须创建一个游戏的动态实例,并将GameComp和DrawGameComp的新对象添加到GameComp类型的指针数组中

Game Game1(2);                 
Game1.Add(new GameComponent);  
Game1.Add(new DrawableGameComponent);
我主要完成了这一部分。因为我必须从main调用addpassing对象作为参数。当我存储这些对象时,我还希望为第一个对象分配id 1,为第二个对象分配id 2。我怎么能把它也包括进去呢。 我的游戏类的Add()函数如下

void Game::Add(GameComponent*)
{ 
components[0]=GameComp;
componentCount++;
}
但它给了我错误。我已经尽力了。但我不能。另外,如何调用数组中这些对象的Display()成员函数?是这边吗?
组件[0]->Display()

添加方法应该如下所示:

void Game::Add(GameComponent* comp)
{ 
    components[componentCount++] = comp;
}
确保将构造函数中的组件计数归零

使用阵列:

components[i]->DoSomething();
1) 您可能打算写以下内容:

void Game::Add(GameComponent* comp)
{ 
    components[componentCount++] = comp;
}

2) 组件[0]->Display()可以工作,如果display是GameComponent类的成员函数。

错误消息是什么?不要忘记,因为您使用的是基类指针,如果希望基类方法调用派生类方法,则需要确保基类方法是虚拟的。使用
std::vector
而不是数组如何?这样您就不需要
componentCount
,并且可以轻松地对项目进行迭代。但是我必须使用数组
comp
只是我为函数参数选择的名称。这意味着无法识别该函数。确保声明具有相同的签名。