hey trying weapon inside list , use particular weapon in player class. way think can putting weapons list , anytime want use weapon search list , set weapon name value returned search. getting run time error because trying return value inside list outside loop. can give me solution this...
here code:
weapon class
doublylinkedlist<weapons> weaponslist; doublylinkedlistiterator<weapons> itr = weaponslist.getiterator(); weapons :: weapons() { this->weaponid = 0; this->weaponname = ""; this->damage = 0; this->weight = 0; } weapons :: weapons(int weaponid,string weaponname,int damage,int weight) { this->weaponid = weaponid; this->weaponname = weaponname; this->damage = damage; this->weight = weight; } int weapons :: getweaponid() { return weaponid; } string weapons :: getweaponname() { return weaponname; } void weapons::setweaponname(string weaponname) { this->weaponname = weaponname; } int weapons :: getdamage() { return damage; } int weapons :: getweight() { return weight; } void weapons :: loadweapons() { string filename = "weapons\\weapons.txt"; ifstream infile(filename); string garbage; int loadweaponid; string loadweaponname; int loaddamage; int loadweight; while(infile >> garbage >> loadweaponid >> garbage >> garbage >> garbage >> loadweaponname >> garbage >> loaddamage >> garbage >> garbage >> loadweight >> garbage) { cout << "weapon id: \t\t"<< loadweaponid<< "\n"; cout << "weapon name: \t\t"<< loadweaponname << "\n"; cout << "damage: \t\t" << loaddamage <<"\n"; cout << "weight: \t\t" << loadweight << "\n"; weapons w1 (loadweaponid,loadweaponname,loaddamage,loadweight); weaponslist.append(w1); } } void weapons :: printweapons() { int index = 0; //loop through iterator. for(itr.start();itr.valid();itr.forth()) { index++; cout << "------------------weapon------------------\n"; cout << "--------------------------------\n"; cout << "position:\t\t" << index << "\n"; cout << "--------------------------------\n"; cout << "weapon id:\t\t" << itr.item().getweaponid() << "\n"; cout << "weapon name:\t\t" << itr.item().getweaponname() << "\n"; cout << "damage:\t\t\t" << itr.item().getdamage() << "\n"; cout << "weight:\t\t\t" << itr.item().getweight() << "\n"; cout << "------------------------------------------\n"; } cout << "weapons: \t\t" << weaponslist.getcount() << "\n"; } string weapons :: searchbyweaponid(int searchbyid) { //loop through iterator. (itr.start(); itr.valid(); itr.forth()) { //if object entered has same first name 1 in loop. if (itr.item().getweaponid() == searchbyid) { //print out details list. cout << "------------------------------------------\n"; cout << "experience:\t\t" << itr.item().getweaponid() << "\n"; cout << "first name:\t\t" << itr.item().getweaponname()<< "\n"; cout << "second name:\t\t" << itr.item().getdamage() << "\n"; cout << "level:\t\t\t" << itr.item().getweight() << "\n"; cout << "------------------------------------------\n"; } } setweaponname(itr.item().getweaponname()); cout << "weapon name: " << getweaponname(); return getweaponname(); } and want use return value in player class:
//------------------------------------------------------------------------------------------- // name: default constructor. //------------------------------------------------------------------------------------------- player :: player() { this->firstname = ""; this->secondname = ""; this->level = 0; this->experience = 0; this->strength = 0; string searchresult = weapons.searchbyweaponid(2); this->weapons.setweaponname(searchresult); }
got fixed stupidly set name outside loop.
string weapons :: searchbyweaponid(int searchbyid) { //loop through iterator. (itr.start(); itr.valid(); itr.forth()) { //if object entered has same first name 1 in loop. if (itr.item().getweaponid() == searchbyid) { //print out details list. cout << "------------------------------------------\n"; cout << "experience:\t\t" << itr.item().getweaponid() << "\n"; cout << "first name:\t\t" << itr.item().getweaponname()<< "\n"; cout << "second name:\t\t" << itr.item().getdamage() << "\n"; cout << "level:\t\t\t" << itr.item().getweight() << "\n"; cout << "------------------------------------------\n"; setweaponname(itr.item().getweaponname()); } } cout << "weapon name: " << getweaponname(); return getweaponname(); }
Comments
Post a Comment