Bonjour.
Je cherche à faire un jeu de carte et j'en suis à la définition des classes de base.
J'ai un problème lorsque le jeu cherche à créer une Main en piochant dans le deck :
Voici une version simplifiée de mon problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 #include <deque> #include <iostream> class Card { enum Rank {/*As à Roi*/} m_rank; enum Suit {/*Couleurs*/} m_suit; Card(Rank rank, Suit suit) : m_rank(rank), m_suit(suit) {} Card(Card &&other) : m_rank(std::move(other.m_rank)), suit(std::move(other.m_suit)) {} Card& operator= (Card &&other) { m_rank = std::move(other.m_rank); m_suit = std::move(other.m_suit); return *this; } Card(const Card&) = delete; Card& operator= (const Card&) = delete; }; class Deck { /** * Creates 52 cards. */ Deck(); /** * @brief draw * Extract the front card. * After this function, the deck won't be full anymore. * @return the front card of the deck */ Card &&draw() { auto card(std::move(m_cards.front())); m_cards.pop_front(); return std::move(card); }; std::deque< Card > m_cards; }; int main(int, char**) { Deck d; auto c = d.draw(); std::cout << c.m_rank << '\n'; return 0; }Le code compile mais le problème vient de la fonction Deck::draw() qui renvoie une carte avec des valeurs aléatoires.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 g++ main.cpp -Wall -Wextra -std=c++11 && ./a.out -110905296
Je pense que le problème vient de la sémantique de mouvement que je ne maîtrise pas encore assez.
D'après vous d'où vient le problème ?
Partager