我一直在为我在学校的C++游戏编程课上做的游戏出现问题。出于某种原因,在调用我用来管理基于库存的东西的函数之后,函数似乎完成并且工作(我认为这是因为我在它的末尾放置了cout命令,并且它们正确地打印了,函数连续运行两次,并且都运行),我的整个游戏崩溃并且没有到达下一行。我试着评论了函数中的所有代码,但它仍然崩溃。我将函数调用注释掉了,并且它可以工作,但我仍然不能说出它有什么问题。我把代码的功能和部分被我打的电话:C++函数调用和函数完成后,游戏完全崩溃
string inventoryFunction(int h, string ab)
{
if(h == 1)
inventory.push_back(ab);
else
if(h == 2)
{
for(int i=0; i < inventory.size(); i++)
{
if(inventory[i] == ab)
inventory[i].erase();
}
}
else
if(h == 3)
{
cout << inventory[0];
for(int i=1; i < inventory.size(); i++)
cout << ", " << inventory[i];
}
}
函数调用:
if(answer.find("village") != string::npos)
{
cout << endl;
cout << "While looking around your village,\nyou found a stone sword and a cracked wooden shield!" << endl;
inventoryFunction(1, "stone sword");
inventoryFunction(1, "cracked wooden shield");
cout << "Would you like to set off on your adventure now?" << endl;
cin >> answer2;
capitalizeLower(answer2);
您是否尝试过在调试器中运行它以查看它实际崩溃的位置? 'inventoryFunction'确实没有任何回报?这可能会导致崩溃,您应该将其作为无效返回或返回一个字符串。 – 2014-09-11 01:53:14
我还没有尝试调试器,但我试图将其更改为无效函数,它似乎已修复它。我不知道为什么,但出于某种原因,我的印象是你无法在无效函数上使用参数。去年我在Java的老师并不是那么棒,而且我从C++中学到了很多知识。无论如何,感谢一吨! :D – mstuff63 2014-09-11 02:18:42
@ mstuff63,如果你的'void'是参数列表('int xyzzy(void)'),那么你不能有参数。如果它是返回类型('void xyzzy(int a)'),那么可以。 – paxdiablo 2014-09-11 02:26:37