一切似乎都没问题,但当我输入I
时,它说
Unhandled exception at 0x64A1EB90 (msvcr110d.dll) in ConsoleGame1.exe: 0xC0000005: Access violation writing location 0xCCCCCCCC.
First-chance exception at 0x64A1EB90 (msvcr110d.dll) in ConsoleGame1.exe: 0xC0000005: Access violation writing location 0xCCCCCCCC.
Unhandled exception at 0x64A1EB90 (msvcr110d.dll) in ConsoleGame1.exe: 0xC0000005: Access violation writing location 0xCCCCCCCC.
The program '[5088] ConsoleGame1.exe' has exited with code 0 (0x0).
代码:
void Inventory();
struct Item
{
string itemName;
string itemDescription;
int itemNumber;
bool haveItem;
void DisplayItem();
};
int main()
{
char inv;
hint:
cout << "HINT: To open your inventory press 'I'.\n";
cin >> inv;
if (inv=='I') Inventory();
else goto hint;
system("pause");
return 0;
}
void Inventory()
{
Item Letter =
{
Letter.itemName = "Letter",
Letter.itemDescription = "...",
Letter.itemNumber = 1,
Letter.haveItem = true
};
Item Wood =
{
Wood.itemName = "Wood",
Wood.itemDescription = "Birch wood.",
Wood.itemNumber = 2,
Wood.haveItem = false
};
Letter.DisplayItem();
Wood.DisplayItem();
}
答案 0 :(得分:1)
要解决手头的问题,你要分配到尚未构建的对象:
Item Letter =
{
Letter.itemName = "Letter",
Letter.itemDescription = "...",
Letter.itemNumber = 1,
Letter.haveItem = true
};
在指定initialisng Letter
的参数时,您将分配给Letter
的成员。那不行。你所追求的是:
Item Letter =
{
"Letter",
"...",
1,
true
};
然而,正如我在评论中所说的那样,代码总体上表明你最好从good book的基础知识开始引导你。例如,您肯定不想要使用goto
而不是循环。 Item
类可以使用构造函数。