そのため、作成しているベクターのコンテンツを単純に印刷しようとしています。基本的に、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];
}
}
}
上記のコードは論理的には正しいように見えますが、試みているときに「No such operator <<」というエラーが表示されます
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;
}