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