c++ - returning a value outside a for loop -


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