簡體   English   中英

類內c ++中的實現g枚舉中的錯誤

[英]error in implementationg enum in c++ inside class

我正在嘗試開設一張代表卡片的課程。 但是我在編譯時遇到了這個錯誤。

錯誤:預期的`;' 在“訴訟”之前。

任何人都可以幫助解決此代碼的問題嗎?

#include<string>
using namespace std;
class Card {

private:
       Card::Suit suit;
       Card::CardName cardName;
public:
    enum Suit {Clubs, Diamonds, Hearts, Spades, UNKNOWN_SUIT};
    enum  CardName {Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, UNKNOWN_CARDNAME};
    class NotInitalised : public exception{};
    Card ();
    Card (int card);
    Card (Card::Suit s, Card::CardName n);
    void setCard(Card::Suit, Card::CardName);
    Card::Suit getSuit();
    Card::CardName getCardName();
    Card::CardName getCardName(int);
    int getCardValue();
    string toString();
};

與在C ++中一樣,您需要在使用前聲明一些內容。 因此,必須在訴訟成員聲明之前將枚舉訴訟的定義移動。

您需要在使用枚舉定義之前將其移動。 例如:

#include<string>
using namespace std;
class Card {

public: 
    enum Suit {Clubs, Diamonds, Hearts, Spades, UNKNOWN_SUIT};
    enum  CardName {Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, UNKNOWN_CARDNAME};
private:
       Card::Suit suit;
       Card::CardName cardName;
public:
    class NotInitalised : public exception{};
    Card ();
    Card (int card);
    Card (Card::Suit s, Card::CardName n);
    void setCard(Card::Suit, Card::CardName);
    Card::Suit getSuit();
    Card::CardName getCardName();
    Card::CardName getCardName(int);
    int getCardValue();
    string toString();
};

應該管用。

另外,您不需要限定類定義中枚舉的使用,即代替

Card::Suit suit;

您可以使用

Suit suit;

我通常在私有類之前聲明類的所有公共元素,因為我希望在查看類時具有該類的公共接口,但這只是其他人可能不同意的樣式首選項。

刪除范圍解析運算符並在使用該類型之前移動類型聲明

您的課程如下所示:

using namespace std;
class Card {

private:
    enum Suit {Clubs, Diamonds, Hearts, Spades, UNKNOWN_SUIT};
    enum  CardName {Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, UNKNOWN_CARDNAME};

     Suit suit;
     CardName cardName;
public:
    class NotInitalised : public exception{};
    Card ();
    Card (int card);
    Card (Suit s, CardName n);
    void setCard(Suit, CardName);
    Suit getSuit();
    CardName getCardName();
    CardName getCardName(int);
    int getCardValue();
    string toString();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM