Déclarant foncteurs pour la comparaison?

J'ai vu d'autres questions de personnes, mais n'en trouva aucun qui s'appliquait à ce que je suis en train de réaliser ici.

Je suis en train de trier des Entités par l'intermédiaire de ma classe EntityManager en utilisant std::sort et un std::vector<Entity *>

/*Entity.h*/
class Entity
{
public:
 float x,y;
};

struct compareByX{
 bool operator()(const GameEntity &a, const GameEntity &b)
 {
  return (a.x < b.x);
 }
};   

/*Class EntityManager that uses  Entitiy*/

typedef std::vector<Entity *> ENTITY_VECTOR; //Entity reference vector

class EntityManager: public Entity
{
private:
 ENTITY_VECTOR managedEntities;

public:
 void sortEntitiesX();
};

void EntityManager::sortEntitiesX()
{

 /*perform sorting of the entitiesList by their X value*/
 compareByX comparer;

 std::sort(entityList.begin(), entityList.end(), comparer);
}

Je reçois une douzaine d'erreurs comme

: error: no match for call to '(compareByX) (GameEntity* const&, GameEntity* const&)'
: note: candidates are: bool compareByX::operator()(const GameEntity&, const GameEntity&)

Je ne suis pas sûr mais ENTITY_VECTOR est std::vector<Entity *> , et je ne sais pas si ça pourrait être le problème lors de l'utilisation de la compareByX foncteur ?

Je suis assez novice en C++, de sorte que toute aide est donc la bienvenue.

Avez-vous mélanger Entity et GameEntity classes?
Par ailleurs, ce que vous souhaitez atteindre?
Remarque: la modification de la question comme ça va être difficile pour vous de choisir la "bonne" réponse 🙂

OriginalL'auteur Goles | 2009-11-19