0

ゲーム内の敵がプレイヤーからの距離順にベクトルでソートされるようにしようとしているので、ソート機能を使用しています。明らかに敵はオブジェクトなので、基本的な述語だけでは不十分で、独自の関数を作成する必要があるため、作成しました。

ただし、これらの関数は静的でなければならないため、この関数で敵とプレイヤーの距離を比較するにはどうすればよいでしょうか。

double World::getPlayerDistance(Entity* enemy){

int xDistance = enemy->m_xValue - m_pPlayer->m_xValue;
int yDistance = enemy->m_yValue - m_pPlayer->m_yValue;

double dist = sqrt(pow((double)xDistance, 2) + pow((double)yDistance, 2));

return dist;
}

これは私が使用しようとしているコードですが、静的関数 (ヘッダーで静的に定義されている) であるため、メンバー変数にアクセスできないため、次のコードは機能しません。

bool World::sortXDistance(Entity *i, Entity *j) { 
return (getPlayerDistance(i) < getPlayerDistance(j)); 
}

(ヘッダーにも static が定義されています) これは、Vector を使用した STL ソートで使用するためのものです。

私はグーグルで試してみましたが、本当の問題を認識していないため、助けをいただければ幸いです。または、別の方法を検討してください。前もって感謝します :)

4

2 に答える 2