Я учусь использовать структуры и создаю текстовую RPG, и я знаю, что элементы должны быть классом в моем коде, так как я использую структуры, и я новичок в c ++ и программировании. Не понимаю, что именно пошло не так с моим кодом, и как это исправить, возникает ошибка, когда я пытаюсь создать объект структуры с именем player. (Я также хотел бы извиниться за мой грязный код, я бездельничаю и буду чистить его, как только получу то, что у меня работает.)
Это моя первая попытка, я не очень старался, потому что не уверен, что именно попробовать.
#include "pch.h"
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
struct item {
double resistance, attack;
string name;
};
item none, WoodenBoots, LeatherChestplate, WoodenShield, WoodenClub, WoodenSword;
struct mobs {
int health, attack;
double droprate, resistance;
item drops[3];
};
item GetData(string object);
int main()
{
none.attack = 0;
none.resistance = 0;
none.name = "none";
WoodenBoots.resistance = .05;
WoodenBoots.attack = 0;
WoodenBoots.name = "Wooden Boots";
LeatherChestplate.resistance = .2;
LeatherChestplate.attack = 0;
LeatherChestplate.name = "Leather Chestplate";
WoodenShield.resistance = .1;
WoodenShield.attack = 0;
WoodenShield.name = "Wooden shield";
WoodenClub.resistance = 0;
WoodenClub.attack = 1.2;
WoodenClub.name = "Wooden Club";
WoodenSword.resistance = .05;
WoodenSword.attack = 1.5;
WoodenSword.name = "Wooden Sword";
mobs goblin;
goblin.attack = 1;
goblin.health = 10;
goblin.droprate = .5;
goblin.resistance = .1;
goblin.drops[1] = WoodenClub;
goblin.drops[2] = WoodenShield;
goblin.drops[3] = WoodenBoots;
mobs Alpha_Goblin;
Alpha_Goblin.attack = 2;
Alpha_Goblin.health = 15;
Alpha_Goblin.droprate = .5;
Alpha_Goblin.resistance = .1;
Alpha_Goblin.drops[1] = WoodenSword;
Alpha_Goblin.drops[2] = WoodenShield;
Alpha_Goblin.drops[3] = LeatherChestplate;
struct pdata {
item Playeritem[6];
item PlayerWeapon;
}player;
player.PlayerWeapon = WoodenSword;
cout << player.PlayerWeapon.name << endl;
player.PlayerWeapon = GetData("weapon");
player.Playeritem[0] = GetData("sheild");
player.Playeritem[1] = GetData("head");
player.Playeritem[2] = GetData("torso");
player.Playeritem[3] = GetData("legs");
player.Playeritem[4] = GetData("feet");
player.Playeritem[5] = GetData("hands");
string weapon = player.PlayerWeapon.name;
cout << weapon << endl;
system("pause");
}
Я ожидаю, что это создаст структуру и перейдет к определению значений элементов внутри структуры. я получаю следующую ошибку в последней строке структуры pdata: Исключение, выданное в 0x57115139 (vcruntime140d.dll) в Structure.exe: 0xC0000005: Место записи нарушения прав доступа 0x3FE00000.