Эти строки кода выполняются:
Enemy* enemy = new Enemy(m_pSceneManager,"enemy"+ss.str());
std::cout << "Enemy name = " << std::string(enemy->name) << std::endl;
Add(enemy->name,enemy);
в EnemyManager.cpp.EnemyManager наследует от GameObjectManager:
void GameObjectManager::Add(sf::String name,VisibleGameObject* obj){
std::cout << "GameObjectManager obj name = " << std::string(obj->name) << std::endl;
gameObjects.insert(std::pair<sf::String,VisibleGameObject*>(name,obj));
}
Enemy наследует от VisibleGameObject, у которых есть открытая переменная sf :: String 'name', но только Enemy инициализирует ее в любой точке (в своем конструкторе).Вывод в окне консоли таков:
Enemy name = enemy0
GameObjectManager obj name =
Почему name
возвращается к нулю?Я предполагаю, что это как-то связано с тем фактом, что аргумент является VisibleGameObject *, а не Enemy * - если это так, как я могу обойти это?Если я допустил ошибку где-то еще, пожалуйста, сообщите мне, если какие-либо детали, которые мне не хватает, требуются.
Спасибо