2013-04-29 64 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运算符知道如何显示基本数据类型,而不是我们创建的数据类型。因此,请提供适当的结构以输出卡数据类型的值,然后继续。