0

所以,我试图简单地打印我正在创建的向量的内容。本质上,我试图输出一个int(即1-4)的玩家和由卡片对象组成的玩家的手。因此,例如,我试图让它 newPlayerHand[1][1] 将给我“黑桃 A”,而 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;
}
4

1 回答 1

1

你的问题不在于向量。它与这行代码。

cout << newPlayerHand[i][j];

当您执行上述步骤时,要输出的对象是数据类型卡。"<<" ostream 运算符知道如何显示基本数据类型,而不是我们创建的数据类型。所以为它提供适当的结构来输出卡片数据类型的值,你就可以继续了。

于 2013-04-29T02:51:56.840 回答