我的程序有問題。迭代器使用關於卡
錯誤是「函數調用缺少參數列表」。
我正在製作一個卡片程序來顯示卡片。我不知道如何正確使用迭代器。
void Deck::ShowDeck()
{
vector<Card>::iterator dealt;
for (dealt = cards.begin(); dealt != cards.end(); dealt++)
{
cout<<*dealt<<" ";
}
}
這裏是我加入deck.h 所以請你給我更多具體的答案?我改變了 '*處理' 到 'dealt->海峽',但它仍然是錯誤的 是的#ifndef _DECK_H_ 的#define _DECK_H_
#include "card.h"
#include <vector>
/**
* This class represents a standard 52-card poker deck
*/
class Deck
{
public:
/**
* Default constructor. This will initialize and shuffle the deck
*/
Deck();
/**
* Reinitilaize the deck and shuffle it.
*/
void Shuffle();
/**
* Dump out the contents of the current deck, minus already dealt cards
*/
void ShowDeck();
/**
* Return a vector of cards that are dealt.
* @param count number of cards to deal
* @return a set of cards from the front of the deck
*/
std::vector<Card> Deal(int count);
private:
std::vector<Card> cards;
std::vector<Card>::iterator dealt;
std::vector<Card> deal;
/* Your code here */
};
#endif //_DECK_H_
這是card.cpp
#include "card.h"
#include <sstream>
using namespace std;
Card::Card()
{
}
std::string Card::str()
{
ostringstream os;
os << valToStr() << suitToStr();
return os.str();
}
std::string Card::suitToStr()
{
switch(suit)
{
case 1:
return"C";
break;
case 2:
return"D";
break;
case 3:
return"H";
break;
case 4:
return"S";
break;
default:
break;
}
}
std::string Card::valToStr()
{
switch (value)
{
case 2:
return "TWO"; break;
case 3:
return "THREE"; break;
case 4:
return "FOUR"; break;
case 5:
return "FIVE"; break;
case 6:
return "SIX"; break;
case 7:
return "SEVEN"; break;
case 8:
return "EIGHT"; break;
case 9:
return "NINE"; break;
case 10:
return "TEN"; break;
case 11:
return "JACK"; break;
case 12:
return "QUEEN"; break;
case 13:
return "KING"; break;
case 14:
return "ACE"; break;
default: break;
}
}
/* Your code here */
這是卡。 h
#ifndef _CARD_H_
#define _CARD_H_
#include <string>
/**
* Card class. This class represents a single playing card
*/
class Card
{
public:
/**
* Suits of playing cards
*/
typedef enum SUITS { CLUBS = 1 , DIAMONDS, HEARTS, SPADES } SUITES;
/**
* The value of the card: 2 through Ace
*/
typedef enum COUNT { TWO = 2, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE } COUNT;
/**
* Default constructor
*/
Card();
/**
* Constructor to initialize our suit and value
*
* @param _suit enum of SUITS
* @param _val value of the card (COUNT enum)
*/
Card(Card::SUITS _suit, Card::COUNT _val)
{
this->suit=_suit;
this->value=_val;
}
/**
* Get a string representation of the card.
* @return string in the format similar to this: "10D", which would be 10
* of diamonds
*/
std::string str();
/**
* Accessor to get this card's suit
* @return value of this card's suit
*/
SUITS getSuit()
{
return suit;
}
/**
* Accessor to get this card's value
* @return value of this card
*/
COUNT getValue()
{
return value;
}
private:
Card::SUITS suit;
Card::COUNT value;
std::string suitToStr();
std::string valToStr();
/* Your code here */
};
#endif // _CARD_H_
這段代碼有什麼問題?目前還不清楚它做了什麼以及它應該做什麼。 – kraskevich 2014-10-30 18:25:01
您向我們展示的代碼段沒有任何問題。錯誤發生在哪裏? – Cameron 2014-10-30 18:26:00
錯誤可能是由於您的代碼沒有爲'Card'類定義'operator <<'。 – 2014-10-30 19:37:44