ゲーム内の敵がプレイヤーからの距離順にベクトルでソートされるようにしようとしているので、ソート機能を使用しています。明らかに敵はオブジェクトなので、基本的な述語だけでは不十分で、独自の関数を作成する必要があるため、作成しました。
ただし、これらの関数は静的でなければならないため、この関数で敵とプレイヤーの距離を比較するにはどうすればよいでしょうか。
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 ソートで使用するためのものです。
私はグーグルで試してみましたが、本当の問題を認識していないため、助けをいただければ幸いです。または、別の方法を検討してください。前もって感謝します :)