Can be done in many ways. I'd make some kind of factory class:
Code:
struct Weapon
{
Weapon(const std::string& NewName, int NewPower)
{
Name = NewName;
Power = NewPower;
}
std::string Name;
int Power;
};
class Weapons
{
public:
void CreateWeapon(const std::string& Name, int Power)
{
WeaponList.insert(std::make_pair(Name, Weapon(Name, Power)));
}
Weapon* GetWeapon(const std::string& Name)
{
return &WeaponList[Name];
}
protected:
std::map<std::string, Weapon> WeaponList;
};
Weapons weapons;
and to create a new weapon:
Code:
weapons.CreateWeapon("Dagger", 12);
weapons.CreateWeapon("Sword", 46);
and to use the weapon:
Code:
Weapon* weapon = weapons.GetWeapon(Player.CurrentWeapon());
enemy.InflictDamage(weapon->Power);
or something...