2017-04-05 39 views
-3

說明是:C++卡片洗牌器錯誤

創建一個程序來洗牌和處理一副牌。該計劃應包括班級卡,班級DeckOfCards和一個驅動程序。

類卡應提供: a)數據成員面對和int類型的套裝。 b)一個構造函數,它接收兩個表示臉和套裝的int,並使用它們初始化數據成員。

Class DeckOfCards應該包含: a)兩個名爲deck的卡對象存儲兩張卡片。 b)一個不帶參數的構造函數,並初始化卡片組中的兩張卡片。 你可以給這兩張牌隨機面值和套裝值,但要確保它們不一樣。 c)打印兩張卡片的printCards功能。

驅動程序應創建一個DeckOfCards對象,並打印此對象所具有的卡片。

你必須在這個項目中的5個文件:card.hpp,card.cpp,deckofcards.hpp,deckofcards.cpp,main.cpp中

我得到的錯誤是:

  1. DeckOfCards.h行中缺少顯式類型(假定爲'int')15
    1. 沒有合適的構造函數存在將main.cpp行8
    2. 缺少類型說明在DeckOfCards.h線-int假定15
    3. '初始化:不能從轉換「DeckOfCards *」到「DeckOfCards」中的main.cpp第8行
    4. 缺少類型specifier-假定爲int在DeckOfCards.h線15
    5. 缺少類型specifier-假定爲int在DeckOfCards.cpp線18

Card.h:

#ifndef Card_H 
#define Card_H 
#include <string> 

using namespace std; 


string suits[4] = { "Hearts", "Diamonds", "Spades", "Clubs" }; 
string faces[12] = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "Jack", "Queen", "King" }; 

class Card { 
public: 
    int face; 
    int suit; 
    Card(int face, int suit); 
    string toString(); 
}; 

#endif 

Card.cpp:

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

using namespace std; 

Card::Card(int face, int suit) { 
    this->face = face; 
    this->suit = suit; 
} 

string Card::toString() { 
    string suitname = suits[suit]; 
    string facename = faces[face]; 

    return facename + " of " + suitname; 
} 

DeckOfCards.h:

#ifndef DeckOfCards_H 
#define DeckOfCards_H 
#include "Card.h" 
#include <vector> 

using namespace std; 


class DeckOfCards { 
public: 
    vector<Card> deck; 

public: 
    DeckOfCards(); 
    printCards(); 
}; 

#endif 

DeckOfCards.cpp:

#include "DeckofCards.h" 
#include "Card.h" 
#include <iostream> 

using std::cin; 
using std::cout; 
using std::string; 


DeckOfCards::DeckOfCards() { 

    for (int i = 0; i<2; i++) { 
     Card card(i + 3, i + 5); 
     deck.push_back(card); 
    } 
} 

DeckOfCards::printCards() { 
    for (int i = 0; i<2; i++) { 
     cout << deck[i].toString(); 
    } 
} 

爲主。CPP:

#include <iostream> 
#include "Card.h" 
#include "DeckOfCards.h" 

using namespace std; 

int main() { 
    DeckOfCards cardDeck = new DeckOfCards(); 
    cardDeck.printCards(); 
    return 0; 
} 
+1

什麼的訴確切的一部分ery清除「Card.hpp中的未知類型名稱'字符串'」您不明白的錯誤消息? –

+0

爲什麼你的套牌只有48張牌? –

+0

[Unknown type name string C++]可能的重複(http://stackoverflow.com/questions/29692326/unknown-type-name-string-c) –

回答

0

要使用std :: string類,你必須包含頭文件字符串,因此將其導入到相應的HPP文件,你需要編寫此

#include <string> 

而不是現在總是打字的std :: string可以添加

using std::string; 

你的程序之前類