我的班级
Game
有一个成员EntityManager entityManager_
。
类
EntityManager
有一个私有成员 Player player_
和返回 Player &EntityManager::getPlayer()
的公共 getter 函数 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
有关,但我不知道要改变什么!有人可以帮我吗?
错误信息非常明确:
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
的成员函数内。
并不直接适用于OP的问题,但我在尝试从标记为const的方法内部推送到向量类成员时遇到了相同消息的错误。向量类型和我传递给它的数据都没有修改 const,这让我感到非常困惑。从函数中删除
const
修饰符解决了我的问题。 (例如 int MyClass::myFunc() const
-> int MyClass::myFunc()
)