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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top