[英]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.