2014-01-22 56 views
0

所以我正在用SDL制作单板滑雪游戏,并且我在障碍类中有一个函数来检查碰撞。当障碍物调用这个函数时,如果玩家碰撞它,我去设置玩家类的collidedObject到它碰撞的对象。代码如下所示:访问调用成员函数的对象,在函数内

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

但我不知道如何获取调用函数的对象。任何帮助?我真的不知道要搜索什么,而我尝试搜索的东西并没有多大帮助。 谢谢。

回答

1

this指向调用成员函数的对象。因此,如果player.collidedObjectObstacle类型,那么你可以写

player.collidedObject = *this; 
+0

我想他是在说叫checkCollision的函数。不一定是对象本身。 – Gasim

+0

啊,我只是错过了这个关键字旁边的*号。来自c#,我仍然习惯于C++的整个内存/指针方面。谢谢。 – picklechips

0

只是一个想法,但它会更有意义,为您的故障等级之外的某处checkCollision。类似于:

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

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