C ++卡Shuffler错误

时间:2017-04-05 00:29:49

标签: c++

说明如下:

创建一个程序来洗牌和处理一副牌。该程序应包括类卡,类DeckOfCards和驱动程序。

Class Card应该提供: a)数据成员面对并且类型为int。 b)一个构造函数,它接收两个代表face和suit的int,并使用它们初始化数据成员。

Class DeckOfCards应包含: a)两个名为deck的卡片对象,用于存储两张卡片。 b)一个不带参数的构造函数,并初始化卡片中的两张卡片。 您可以为这两张卡片提供随机面值和适合值,但请确保它们不相同。 c)打印两张卡的printCards功能。

驱动程序应该创建一个DeckOfCards对象,并打印该对象所具有的卡片。

您需要在此项目中拥有5个文件:card.hpp,card.cpp,deckofcards.hpp,deckofcards.cpp,main.cpp

我得到的错误是:

  1. 在DeckOfCards.h第15行中缺少显式类型(假设为'int')
    1. 在main.cpp第8行中,没有合适的构造函数可以从“DeckOfCards *”转换为“DeckOfCards”
    2. 缺少类型说明符-int在DeckOfCards.h第15行中假设
    3. '初始化':无法在main.cpp第8行中将'DeckOfCards *'转换为'DeckOfCards'
    4. 在DeckOfCards.h第15行中假设缺少类型说明符 -
    5. 在DeckOfCards.cpp第18行中假设缺少类型说明符 -
  2. 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();
        }
    }
    

    main.cpp中:

    #include <iostream>
    #include "Card.h"
    #include "DeckOfCards.h"
    
    using namespace std;
    
    int main() {
        DeckOfCards cardDeck = new DeckOfCards();
        cardDeck.printCards();
        return 0;
    }
    

1 个答案:

答案 0 :(得分:0)

要使用std :: string类,必须包含头文件字符串,因此要将其导入相应的hpp文件,需要编写此文件

#include <string>

现在而不是总是输入std :: string,你可以添加

using std::string;
在编写课程之前