Keluaran Objek Vektor Multidimensi

Jadi, saya mencoba mencetak konten vektor yang saya buat. Pada dasarnya saya mencoba mengeluarkan pemain yang berupa int (yaitu 1-4) dan tangan pemain yang terdiri dari objek Kartu. Jadi, misalnya, saya mencoba mencapai titik di mana newPlayerHand[1][1] akan memberi saya "Ace of Spades", dan newPlayerHand[1][2] akan menampilkan "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];
        }

}
}

Kode di atas terlihat dan terdengar benar secara logis bagi saya, tetapi kode tersebut memberi saya kesalahan "Tidak ada operator seperti itu ‹‹" ketika saya mencoba

cout << newPlayerHand[i];

Saran atau tip apa pun tentang kesalahan saya di sini akan sangat dihargai.

Oke, jadi saya sudah mengeditnya ke akun operator ostream, tapi sepertinya saya masih mendapatkan kesalahan untuk eksternal yang belum terselesaikan. (dasar_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;
}

person Barry Tormey    schedule 29.04.2013    source sumber


Jawaban (1)


Masalah Anda bukan pada Vektor. Ini dengan baris kode ini.

cout << newPlayerHand[i][j];

Ketika Anda melakukan langkah di atas, objek yang akan dikeluarkan adalah tipe data kartu. "‹‹" operator ostream mengetahui cara menampilkan tipe data dasar, bukan tipe data yang kami buat. Jadi berikan struktur yang tepat untuk menampilkan nilai tipe data kartu dan Anda dapat melanjutkan.

person csurfer    schedule 29.04.2013