Transfert de unique_ptr d'un vector à un autre
Bonjour,
Voici un exemple dans lequel j'ai trois classes : Card, Player et Game. La classe Player contient un vector de unique_ptr de Card et la classe Game aussi.
La classe Player dispose d'une méthode addCard qui permet d'ajouter une carte dans la main du joueur.
La classe Game dispose aussi d'une méthode drawCard qui retourne la première carte du tas après l'avoir retirée.
On a donc le code suivant :
Code:
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
| #include <vector>
#include <memory>
class Card{};
class Player{
public:
std::vector<std::unique_ptr<Card>> hand;
void addCard(std::unique_ptr<Card> card);
};
void Player::addCard(std::unique_ptr<Card> card){
hand.push_back(card);
}
class Game{
public:
std::vector<std::unique_ptr<Card>> deck;
std::unique_ptr<Card> drawCard();
};
std::unique_ptr<Card> Game::drawCard(){
std::unique_ptr<Card> card = std::move(deck.front());
deck.erase(deck.begin());
return card;
} |
Idéalement, j'aimerais bien ajouter directement une carte dans la main du joueur en la piochant dans le tas du jeu :
Code:
1 2 3 4
| // Player player;
// Game game;
player.addCard(game.drawCard()); |
Seulement ce code ne compile pas (notamment avec la fonction addCard), j'ai plusieurs questions :
- le code de ma fonction drawCard() est-il correct? Le but est de retirer le premier élément du vector et de le retourner par valeur
- Comment transférer un unique_ptr d'un vector à un autre?
Merci d'avance, si ce n'est pas clair n'hésitez pas à me poser des questions