2014-01-22 49 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  
    }  
}