我一直在爲我在學校的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