2017-04-07 1 views
0

마우스 이벤트를 만들어 직사각형을 클릭하면 if 문을 다시 포맷하여 'SDL_Rect'유형의 임시 객체 주소를 가져 오는 데 오류가 발생하지 않도록 할 수 있습니다. SDL_Rect가 (일반 안녕, 'C는 "POCO"있는 그대로 할당에 대해 걱정하지 마십시오임시 객체의 주소 사용 방법을 어떻게 변경합니까?

for(int y = 0; y < TILE_HEIGHT; y++) 
for(int x = 0; x < TILE_WIDTH; x++) 
{ 
    SDL_Rect rect = tileMap_[y][x].getBoundRect(); 
    if(isPointInTileMap = SDL_PointInRect(&point, &rect)) break; 
} 

이 더 간단하게 할 수

for(int y = 0; y < TILE_HEIGHT; y++) 
{ 
    for(int x = 0; x < TILE_WIDTH; x++) 
    { 
     SDL_Rect rect = tileMap_[y][x].getBoundRect(); 
     if(SDL_PointInRect(&point, &rect)) 
     { 
      isPointInTileMap = true; 
      break; 
     } 
    } 
} 

:

//Get the mouse offsets 
x = event.motion.x; 
y = event.motion.y; 
SDL_Point point ={x, y}; 
bool isPointInTileMap = false; 

for (int i = 0; i < TILE_HEIGHT; i++) 
{ 
    for (int j = 0; j < TILE_WIDTH; j++) 
    { 
     if (SDL_PointInRect(&point, &(tileMap_[i][j].getBoundRect()))) 
     { 
      isPointInTileMap = true; 
      break; 
     } 
    } 
} 

답변

1

은 단순히 지방을 사용 Object) 구조체이므로 스택에 있으며 자동으로 교정됩니다. 포인터가 매달려 있으므로 &rect 값을 절대 사용하지 않도록하십시오.

+0

완벽한, 감사합니다. – Vyff

관련 문제