从所有类访问对象数组

时间:2013-10-18 17:45:24

标签: c++ arrays object pointers global

首先,请原谅我可怜的英语。

好吧,我正在尝试使用Allegro的库在C ++中制作一个简单的游戏,但我不知道如何创建一个可以从所有clases中加入的对象数组。

更准确地说,我在主要类的main()函数中有这个代码:

CBody **objs = new CBody*[n];
objs[0] = new CBall(320,240);
objs[1] = new CRing(500,120);

然后我需要在CBall的类中创建一个函数来检查与CRing实例的冲突。类似的东西:

bool CBall::CheckRingCol(){
  return (colCircle(myX,myY,myRadious,objs[1]->myX,objs[1]->myY,objs[1]->myRadious));
}

有什么想法吗?

谢谢你,伙计们!

1 个答案:

答案 0 :(得分:2)

首先,不要使用双指针疯狂。你不需要它。

你有一个CBody数组,大概是一个基类(有助于发布更多代码)

#include <memory>
typedef shared_ptr<CBody> spBody;

vector<spBody> bodies;
bodies.emplace_back( spBody(new CBall(320, 140)) ); // don't need to bother about delete when you use a shared_ptr
bodies.emplace_back( spBody(new CRing(500, 120)) );

谁叫球环碰撞?

您可以将响铃作为参数传递给bool CBall::CheckRingCol(const CRing*) const