首先,请原谅我可怜的英语。
好吧,我正在尝试使用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));
}
有什么想法吗?
谢谢你,伙计们!
答案 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
。