1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
struct weapon
{
weapon() =default;
weapon(weapon&) =delete;
weapon(weapon&&) =default;
weapon& operator=(weapon&) =delete;
weapon& operator=(weapon&&) =default;
};
struct character
{
auto release()
{
using std::swap;
std::unique_ptr<weapon> empty; //On créé une main vide
swap(hand,empty); //On échange la main vide avec notre main
return empty; //On retourne la main qu'on avait créé
}
auto equip(std::unique_ptr<weapon>&& to_equip)
{
using std::swap;
swap(hand,to_equip); //On échange notre main avec l'arme qu'on veut
return std::move(to_equip); //On retourne ce qu'on avait dans la main
}
private:
std::unique_ptr<weapon> hand;
}; |
Partager