所以,我试图简单地打印我正在创建的向量的内容。基本上我正在尝试输出将是int(即1-4)的玩家和由Card对象组成的玩家手。所以,例如,我试图让它达到newPlayerHand [1] [1]将给我"黑桃王牌"和newPlayerHand [1] [2]将输出"杰克俱乐部"
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];
}
}
}
上面的代码看起来和声音在逻辑上对我来说是正确的,但它给了我错误&#34;没有这样的运算符&lt;&lt;&#;当我在尝试时
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;
}
答案 0 :(得分:1)
你的问题不在于矢量。它有这行代码。
cout << newPlayerHand[i][j];
执行上述步骤时,要输出的对象是数据类型卡。 “&LT;&LT;” ostream运算符知道如何显示基本数据类型而不是我们创建的数据类型。因此,为卡数据类型的输出值提供适当的结构,您可以继续。