所以我正在研究一个基于文本的RPG,我遇到了一个问题.我目前正在从角色的库存中装备武器.我试图这样做,以便我的程序可以判断他们想要装备的物品是否属于等级Weapon.这是相关代码的剪辑:
Item tempChosenWeapon = myInventory.chooseItem();
cout << tempChosenWeapon.getName() << endl;
Item *chosenWeapon = &tempChosenWeapon;
cout << chosenWeapon->getName() << endl;//THE CODE WORKS UP TO HERE
Weapon *maybeWeapon = dynamic_cast<Weapon*>(chosenWeapon);
cout << maybeWeapon->getName() << endl;
Run Code Online (Sandbox Code Playgroud)
现在,Weapon是一个子类Item,这就是为什么我使用动态强制转换 - 尝试更改chosenWeapon(类型)Item,Weapon以便比较两个类.(我正在使用这些cout<<或测试是否从这些对象调用函数).
我的程序编译,一切运行正常,直到我们来到maybeWeapon->getName()程序崩溃.我已经研究了很多,但我只是不明白我做错了什么.任何答案或替代建议非常感谢!谢谢!
c++ polymorphism software-design game-development game-engine