Эй Я пытаюсь получить оружие из списка и использовать это конкретное оружие в своем классе. То, как я думаю, могу сделать это, поместив все оружие в список, а затем в любое время, когда я хочу использовать поиск оружия в списке и установить имя оружия в значение, возвращаемое поиском. Но я получаю ошибку времени выполнения, потому что я пытаюсь вернуть значение внутри списка вне цикла for. Может кто-нибудь дать мне решение этой проблемы ..., возвращающее значение вне цикла for
Вот мой код:
класс Оружие
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 the 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 the Iterator.
for (itr.Start(); itr.Valid(); itr.Forth())
{
//If the object entered has the same first name as the one in the loop.
if (itr.Item().getWeaponID() == searchByID)
{
//Print out the details from the 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();
}
, а затем, когда я хочу использовать возвращаемое значение в классе игрока:
//-------------------------------------------------------------------------------------------
// 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);
}