Необработанное исключение в msvcr110d.dll

Кажется, все в порядке, но когда я вхожу 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

Решение

Чтобы решить проблему, вы назначаете объекты, которые еще не созданы:

Item Letter =
{
Letter.itemName = "Letter",
Letter.itemDescription = "...",
Letter.itemNumber = 1,
Letter.haveItem = true
};

Вы назначаете в члены Letter при указании аргументов для инициализации Letter, Это не будет делать. То, что вы были после того, как:

Item Letter =
{
"Letter",
"...",
1,
true
};

Тем не менее, код в целом показывает, что вам лучше начать с основ хорошая книга чтобы направлять вас, как я уже сказал в комментариях. Например, вы определенно не делайте хочу использовать goto вместо петли. И Item класс может использовать конструктор.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]