Объект имеет спецификаторы типа, которые не совместимы с функцией-членом

Мои занятия 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 но я не могу понять, что изменить! Может ли кто-нибудь помочь мне?

5

Решение

Сообщение об ошибке довольно явно:

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,

16

Другие решения


По вопросам рекламы [email protected]