试图让一个对象碰撞并删除C ++中的另一个对象

时间:2013-03-01 20:46:34

标签: c++

所以我有一个任务,要求我在Player对象和一个Object(一个多维数据集/ pyrmaid / sphere真的无关紧要)之间发生碰撞,使用Octree进行碰撞计算。在Player与Object碰撞时,需要删除该对象。我有这样的功能

void BinPart::ProcessCollisions(int &nbrTests, int &nbrCollisions){
    if(hasChildren())
    {
        for(int i = 0; i <= 7; i++)
        {
        child[i]->ProcessCollisions(nbrTests, nbrCollisions);
        }
    }
    int n = objects.size();

    if(n >= 2)
    {
        for(int i = 0; i < n - 1; i++)
        {
            for(int j = i + 1; j < n; j++)
            {
                nbrTests++;
                if(player->collidesWith(objects[j]))
                {
                    objects.erase(objects.begin() + j);
                }
                else
                {
                    if(objects[i]->collidesWith(objects[j]))
                        {
                            nbrCollisions++;
                        }
                }
            }
        }
    }
    if(n >= 1 && parent != NULL)
    {
        parent->ProcessBorderCollisions(this, nbrTests, nbrCollisions);
    }
}

目前player->collidesWith(objects[j]);不起作用,因为播放器在binPart的头文件中是“未定义的”,是一个Object类型的基类的前向声明,其中所有对象都来自该类。然而,Object *播放器在Game.h中,但我需要binPart才能访问它。我问过我的一个朋友,我的课程是什么,他和我的几乎完全一样,提出了问题。如果需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

如果源文件使用头文件中声明的内容,请在源文件中包含该头文件,即使它也包含在另一个源文件中。使用包含警戒以确保您不会重新声明任何内容。