Мои занятия Game
имеет члена EntityManager entityManager_
,
Класс EntityManager
имеет частного члена Player player_
и функция общественного добытчика Player &EntityManager::getPlayer()
который возвращается player_
,
Класс Player
имеет, например, функции void startMoving()
а также sf::Vector2f getPosition() const
,
Теперь я могу без проблем позвонить entityManager_.getPlayer().startMoving();
изнутри моего Game
класс, но когда я пытаюсь, например, следующий код, чтобы получить позицию игрока:
sf::Vector2f playerPosition = entityManager_.getPlayer().getPosition();
Я получаю следующую ошибку:
IntelliSense:
EntityManager Game::entityManager_
Error: the object has type qualifiers that are not compatible with the member function
object type is: const EntityManager
Выход:
game.cpp(261): error C2662: 'EntityManager::getPlayer' : cannot convert 'this' pointer from 'const EntityManager' to 'EntityManager &'
Conversion loses qualifiers
Я пытался удалить const
из функции игрока getPosition, но ничего не изменилось.
Я знаю, что это, вероятно, как-то связано с const
но я не могу понять, что изменить! Может ли кто-нибудь помочь мне?
Сообщение об ошибке довольно явно:
game.cpp(261): error C2662: 'EntityManager::getPlayer' :
cannot convert 'this' pointer from 'const EntityManager' to
'EntityManager &'
Conversion loses qualifiers
В контексте, где вы звоните getPlayer
объект / ссылка const
, Вы не можете вызвать неконстантную функцию-член на const
объект или через const
ссылка или указатель на const
,
Потому что ошибка относится к this
Наиболее вероятной причиной является то, что этот код находится внутри функции-члена, которая const
,