我的班级Game
有一名成员EntityManager entityManager_
。
班级EntityManager
有一个私人会员Player player_
和公共getter函数Player &EntityManager::getPlayer()
,它返回player_
。
班级Player
例如有void startMoving()
和sf::Vector2f getPosition() const
。
现在,我可以毫无问题地从entityManager_.getPlayer().startMoving();
课程中调用Game
,但是当我尝试使用以下代码来获取玩家的位置时:
sf::Vector2f playerPosition = entityManager_.getPlayer().getPosition();
我收到以下错误:
智能感知:
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
我尝试从播放器的getPosition函数中删除const
,但没有任何更改。
我知道它可能与const
有关,但我无法弄清楚要改变什么!有人可以帮助我吗?
答案 0 :(得分:16)
错误消息非常明确:
game.cpp(261): error C2662: 'EntityManager::getPlayer' :
cannot convert 'this' pointer from 'const EntityManager' to
'EntityManager &'
Conversion loses qualifiers
在您调用getPlayer
的上下文中,对象/引用为const
。您不能在const
对象上或通过const
引用或指向const
的指针调用非const成员函数。
因为错误引用this
,最可能的原因是此代码位于const
的成员函数内。