在函数内访问调用成员函数的对象

时间:2014-01-22 02:38:52

标签: c++ function class object

所以我正在用SDL制作滑雪板游戏,我在障碍类中有一个检查碰撞的功能。当障碍物调用此功能时,如果玩家与其发生碰撞,我将玩家类的collidedObject设置为与其碰撞的对象。代码如下所示:

void Obstacle::checkCollision()
{
    // Check for collision
    // If player collided
    player.collidedObject = theObjectThatCalledThisFunction;
}

但我不知道如何获得调用该函数的对象。有帮助吗?我真的不知道要搜索什么,我尝试搜索的内容并没有多大帮助。 感谢。

2 个答案:

答案 0 :(得分:1)

this指向调用成员函数的对象。因此,如果player.collidedObject的类型为Obstacle,那么您可以编写

player.collidedObject = *this;

答案 1 :(得分:0)

只是一个想法,但你更有意义在障碍类之外的某个地方检查冲突。类似的东西:

bool Obstacle::checkCollision(Player &player) {
    //collision test here
    return collisionResult;
}

PlayerSystem::collisionTest() {
    foreach(Obstacle : ObstaclesCloseBy) {
        if(obstacle->checkCollision(player)
            player.rollLikeABarrelDownTheSlope(); //or whatever    
    }    
}