Objet a de type de qualificatifs qui ne sont pas compatibles avec la fonction de membre

Ma classe Game a un membre EntityManager entityManager_.

La classe EntityManager a un membre privé Player player_ et le public de lecture de la fonction Player &EntityManager::getPlayer() qui renvoie player_.

La classe Player a par exemple les fonctions void startMoving() et sf::Vector2f getPosition() const.

Maintenant, je peux sans problèmes l'appel entityManager_.getPlayer().startMoving(); de l'intérieur de mon Game classe, mais quand j'essaie par exemple le code suivant pour obtenir la position du joueur:

sf::Vector2f playerPosition = entityManager_.getPlayer().getPosition();

J'obtiens l'erreur suivante:

IntelliSense:

EntityManager Game::entityManager_

Error: the object has type qualifiers that are not compatible with the member function

object type is: const EntityManager

De sortie:

game.cpp(261): error C2662: 'EntityManager::getPlayer' : cannot convert 'this' pointer from 'const EntityManager' to 'EntityManager &'
          Conversion loses qualifiers

J'ai essayé de supprimer les const de la getPosition fonction, mais rien n'a changé.

Je sais qu'il a probablement quelque chose à voir avec la const mais je ne peux pas comprendre ce qu'il faut changer! Quelqu'un pourrait-il m'aider?

Je soupçonne que vous n'avez pas un const version de getPlayer mais vous n'ont montré aucun code.
L'ajout de const à getPlayer supprime l'erreur, mais pourriez-vous me dire ce que je dois retourner au lieu de player_? Parce que maintenant getPlayer me dit: erreur: les qualificateurs a chuté de référence de type "Joueur &" pour l'initialiseur de type "const Joueur"
Êtes-vous à l'intérieur d'une fonction membre qui est lui-même déclaré const?
Ah, oui. Cette fonction membre est en effet const. Je l'ai enlevé et maintenant ça fonctionne! Merci
Vous avez besoin Player &EntityManager::getPlayer() { return _player; } ET const Player &EntityManager::getPlayer() const { return _player; }

OriginalL'auteur A. D. | 2014-07-10