2013-04-29 63 views
0

所以,我試圖簡單地打印我創建的矢量的內容。基本上我試圖輸出一個可以是int的玩家(即1-4)和由Card對象組成的玩家手牌。因此,例如,我試圖讓它達到newPlayerHand [1] [1]會給我「黑桃王牌」的地步,而newPlayerHand [1] [2]會輸出「Jack of Clubs」對象的輸出多維向量

void Blackjack::deal() 
{ 
// create a new hand 
vector < vector <Card>> newPlayerHand; 

for (int i = 0; i < numPlayers; i++) 
{ 
    vector <Card> player; // Create an empty row 
     for (int j = 0; j < 2; j++) { 
      player.push_back(dealCard()); // Add an element(column) 
              // to the row 
      newPlayerHand.push_back(player); // Add the row to the main vector' 
      cout << newPlayerHand[i][j]; 
     } 

} 
} 

上面的代碼看起來和邏輯聽起來很正確的我,但它給我的錯誤「沒有這樣的運營商< <」當我試圖

cout << newPlayerHand[i]; 

上,我錯了這裏,其中的任何意見或建議將不勝感激。

好的,所以我編輯它來說明ostream運算符,但我似乎仍然得到未解決的外部錯誤。 (basic_ostream)

template<typename T> 
ostream& operator<<(ostream& os, const vector<T>& v) 
{ 
    copy(v.begin(), v.end(), std::ostream_iterator<T>(std::cout, " ")); 
return os; 
} 

回答

1

你的問題不是與向量。它與這行代碼。

cout << newPlayerHand[i][j]; 

當您執行上述步驟時,要輸出的對象是數據類型卡。 「< <」ostream運算符知道如何顯示基本數據類型,而不是我們創建的數據類型。因此,請提供適當的結構以輸出卡數據類型的值,然後繼續。