Object has type qualifiers that are not compatible with the member function
The error message is quite explicit:
game.cpp(261): error C2662: 'EntityManager::getPlayer' :
cannot convert 'this' pointer from 'const EntityManager' to
'EntityManager &'
Conversion loses qualifiers
In the context where you are calling getPlayer
the object/reference is const
. You cannot call a non-const member function on a const
object or through a const
reference or pointer to const
.
Because the error refers to this
, the most likely reason is that this code is inside a member function that is const
.
A. D.
Updated on July 05, 2022Comments
-
A. D. almost 2 years
My class
Game
has a memberEntityManager entityManager_
.The class
EntityManager
has a private memberPlayer player_
and the public getter functionPlayer &EntityManager::getPlayer()
which returnsplayer_
.The class
Player
has for example the functionsvoid startMoving()
andsf::Vector2f getPosition() const
.Now, I can without problems call
entityManager_.getPlayer().startMoving();
from within myGame
class, but when I try for example the following code to get the player's position:sf::Vector2f playerPosition = entityManager_.getPlayer().getPosition();
I get the following error:
IntelliSense:
EntityManager Game::entityManager_ Error: the object has type qualifiers that are not compatible with the member function object type is: const EntityManager
Output:
game.cpp(261): error C2662: 'EntityManager::getPlayer' : cannot convert 'this' pointer from 'const EntityManager' to 'EntityManager &' Conversion loses qualifiers
I tried removing the
const
from the player's getPosition function but nothing changed.I know it probably has something to do with the
const
but I can't figure out what to change! Could someone please help me?