Итак, я пытаюсь просто распечатать содержимое простого вектора, но получаю странную ошибку. Вот код:
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);
}
}