Exception non perdue lors de la lecture des structures
Question
Le programme lance une exception non perdue sur cette ligne:
}else if(s == "backpack"){
cout << "\nEquipped items: " << endl;
cout << weapon->Name << endl << cArmour->Name << endl; //this line
Il imprime les «éléments équipés:« lance ensuite une exception. Ce fichier - Player.h - inclut Library.h, qui à son tour comprend Globals.h, qui a les structures:
struct sWeapon{
std::string Name;
int Damage;
};
struct sArmour{
std::string Name;
int AP;
};
Dans le constructeur du joueur, il crée les objets struct:
Player::Player(std::map<std::string,sWeapon*> wepArray,std::map<std::string,sArmour*> armArray){
weapons = wepArray;
armour = armArray;
weapon = wepArray["None"];
cArmour = armArray["None"];
}
Au début de l'ensemble du programme, il appelle init_weapons et init_armour:
int main(){
using namespace std;
//initialise the game
std::map<std::string,sWeapon*> wepArray = init_weapons(); //get weapon array
std::map<std::string,sArmour*>armArray = init_armour(); //get armour array
qui renvoient la carte de toutes les armes:
//init_weapons()
//sets up weapons map
std::map<std::string,sWeapon*> init_weapons(void){
std::map< std::string, sWeapon* > weapons; //map of weapons
//starting 'none'
sWeapon* none = new sWeapon();
none->Name = "None";
none->Damage = 0;
//create weapons
sWeapon* w1 = new sWeapon();
w1->Name = "Rusty dagger";
w1->Damage = 3;
//put in map
weapons[w1->Name] = w1;
return weapons;
}
std::map<std::string,sArmour*> init_armour(void){
std::map< std::string, sArmour* > armour; //map of armour
//starting 'none'
sArmour* none = new sArmour();
none->Name = "None";
none->AP = 0;
//create armour
sArmour* a1 = new sArmour();
a1->Name = "Leather";
a1->AP = 10;
//put in map
armour[a1->Name] = a1;
return armour;
}
Ensuite, passe ces cartes comme des arguments au constructeur du joueur illustré ci-dessus.
La solution
Je suppose soit weapon
ou cArmour
n'est nulle ou point nulle part.
C'est plus probable car vous ne stockez pas votre arme et votre armure "dans votre hachage mondial.
Essayez d'imprimer le pointeur pour ces deux objets "aucun", puis les valeurs du pointeur pour les membres de l'objet weapon
ou cArmour
.