【发布时间】:2014-09-11 01:50:21
【问题描述】:
我在学校的 C++ 游戏编程课上制作的游戏遇到了问题。出于某种原因,在调用我用来管理基于库存的东西的函数之后,该函数似乎完成并工作(我认为这是因为我在它的末尾输入了 cout 命令并且它们正确打印,也是函数连续运行两次,它们都运行),我的整个游戏崩溃并且没有到达下一行。我尝试注释掉函数中的所有代码,但它仍然崩溃。我注释掉了函数调用并且它起作用了,但我仍然不知道它有什么问题。我将把函数的代码和我调用的部分放在一起:
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真的什么都不返回吗?这可能会导致崩溃,您应该将其设为 void return 或返回一个字符串。 -
我没有尝试过调试器,但我尝试将其更改为 void 函数,它似乎已修复它。我不知道为什么,但由于某种原因,我的印象是你不能在 void 函数上有参数。去年我的 Java 老师不是特别好,我将很多知识带到了 C++ 中。无论如何,非常感谢! :D
-
@mstuff63,如果你的
void是参数列表(int xyzzy(void)),你不能有参数。如果是返回类型(void xyzzy(int a)),可以。 -
@paxdiablo 哦,谢谢!我将不得不记住这一点,这样就不会再发生在我身上了哈哈
标签: c++ function vector inventory