2016-11-19 62 views
0

我想要向4名玩家交付13張牌,然後展示手牌。但我正在努力弄清楚如何處理這些卡片。我知道我必須使用流行和推動套牌來處理卡片,但我無法獲得任何工作。任何想法都會有所幫助。我想這到目前爲止,C++交易並顯示一副撲克牌與矢量

void deal(vector<int> deck, int card[][cards], int players) { 
    for (int i = 0; i < players; i++) { 
     cout << "Player " << i + 1 << ": "; 
     for (int k = 0; k < cards; k++) { 
      deck.push_back(cards); 
     } 
     cout << endl; 

    } 

} 

回答

4

,而這似乎工作

void deal(vector<int> deck, int card[][cards], int players) {

你只更新您傳遞參數的副本。一旦您退出該功能,您的更改將丟失給主叫方。

我建議這樣的:路過參考

void deal(vector<int> &deck, int card[][cards], int players) { 

,甚至這樣的:

vector<int> deal(int card[][cards], int players) { 
    vector<int> deck; 
    ... 
    return deck; 

這是更優雅(因爲你deck變量應該是在啓動空的,所以它的一個out參數,而不是輸入/輸出 paraemter) 現在編譯器使用return value optimization,它並不比通過引用成本高很多。我們不要試圖比編譯器更聰明。