2017-04-07 8 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

関連する問題