WedX - журнал о программировании и компьютерных науках

содержимое вектора не печатается

Итак, я пытаюсь просто распечатать содержимое простого вектора, но получаю странную ошибку. Вот код:

srand(time(NULL));

for (int i = 0; i < 7; i++){
    AIhand[i] = deck[rand() % deck.size()];
    cout << AIhand[i] << endl;
}

«колода» — это вектор класса Card (для карточной игры). Ошибка исходит от первого '‹‹' в строке cout. Visual Studio говорит, что "ни один оператор "‹‹" не соответствует этим операндам - ​​типы операндов: std::ostream ‹ ‹ Card". Я публикую это как новый вопрос, потому что я включил <string>, <iostream> и using namespace std;, и это обычные решения проблем людей, связанных с невозможностью распечатать вектор.

Насколько я могу судить, мой синтаксис правильный, но я относительно новичок в C++, так что это может быть просто ошибка пользователя.

Заранее спасибо!

РЕДАКТИРОВАТЬ: вот файл заголовка класса Card:

#ifndef CARD_H_
#define CARD_H_

#include <string>
#include <iostream>
#include <ostream>
#include <vector>
using namespace std;

class Card {
public:
    Card(string newSuit, int newValue);
    string showCard();

private:
    int cardValue;
    string cardSuit;
};


#endif CARD_H_

вот файл карты .cpp:

#include "Card.h"
#include <sstream>
#include <iostream>
#include <ostream>

Card::Card(string newSuit, int newValue) {

    cardValue = newValue;

    cardSuit = newSuit;

}

string Card::showCard(){

    stringstream card;

    card << cardValue << " of " << cardSuit << endl;

    return card.str();
}

это колода

vector<Card> deck;

    for (int i = 0; i < 56; i++){
        for (int j = 0; j < 14; j++) {
            Card cuccos("Cuccos", j);
            deck.push_back(cuccos);
        }
        for (int j = 0; j < 14; j++){
            Card loftwings("Loftwings", j);
            deck.push_back(loftwings);
        }
        for (int j = 0; j < 14; j++){
            Card bullbos("Bullbos", j);
            deck.push_back(bullbos);
        }
        for (int j = 0; j < 14; j++){
            Card skulltulas("Skulltulas", j);
            deck.push_back(skulltulas);
        }

    }
15.09.2017

  • Возможный дубликат функции печати для класса c++ 15.09.2017
  • вы определили оператор ‹‹ для класса AIhand?? 15.09.2017
  • @ΦXocę웃Пepeúpaツ У меня есть ostream и iostream, определенные в классе Card, который использует вектор AIhand 15.09.2017
  • Насколько я понимаю, колода — это вектор класса карты, поэтому вы определили << operator для класса карты? 15.09.2017
  • @ShubhamAgrawal У меня есть, но, похоже, это не имеет значения 15.09.2017
  • тогда, пожалуйста, поделитесь всем кодом перегрузки оператора и класса 15.09.2017
  • @marina Если на ваш вопрос дан ответ, рассмотрите возможность его принятия (см. Как принять ответ работа?). В противном случае вам, вероятно, следует улучшить свой вопрос, чтобы уточнить текущую реализацию оператора вывода. 15.09.2017

Ответы:


1

Поскольку вы относительно новичок в C++, я думаю, что в комментариях есть недопонимание.

У меня есть ostream и iostream, определенные в классе Card, который использует вектор AIhand [...], но, похоже, это не имеет значения

другие спрашивают, определили ли вы пользовательский ostream operator << для класса Card. Вы отвечаете, что включили заголовки ostream и iostream.

Простое решение: попробуйте напечатать текст вместо вашего класса Card:

cout << AIhand[i].showCard() << endl;

Более сложное решение: узнайте, как перегрузить operator << для вашего класса карты.

См. эти связанные вопросы для получения дополнительной информации:

Функция печати для класса c++

Как правильно перегрузить оператор ‹‹ для ostream?

15.09.2017
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]