2014-01-22 4 views
0

그래서 SDL을 사용하여 스노우 보드 게임을 만들고 충돌을 확인하는 장애 클래스에 함수가 있습니다. 장애물이이 함수를 호출 할 때 플레이어가 충돌 한 경우 플레이어 클래스의 collidedObject를 충돌 한 객체로 설정하려고했습니다. 코드는 다음과 같습니다 :함수 내에서 멤버 함수를 호출하는 객체에 액세스

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

그러나이 함수를 호출 한 객체를 얻는 방법을 모르겠습니다. 어떤 도움이 필요합니까? 나는 무엇을 검색해야할지 몰랐고, 검색을 시도한 것은별로 도움이되지 못했습니다. 감사합니다. .

답변

1

this은 member 함수를 호출하는 객체를 가리 킵니다. 따라서, player.collidedObject 유형 Obstacle 인 경우에, 당신은

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  
    }  
} 
관련 문제