C ++传递枚举作为参数

时间:2010-05-20 00:18:21

标签: c++ parameters enums

如果我有一个像这样的简单类用于卡片:

class Card {
        public:
            enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES };
            Card(Suit suit);
    };

然后我想在另一个文件中创建一个卡片实例如何传递枚举?

#include "Card.h"
using namespace std;
int main () {
    Suit suit = Card.CLUBS;
    Card card(suit);
    return 0;
}

错误:此范围内未声明'Suit'

我知道这有效:

#include "Card.h"
using namespace std;
int main () {
    Card card(Card.CLUBS);
    return 0;
}

但如何在另一个文件中创建Suit类型的变量?

2 个答案:

答案 0 :(得分:12)

当不在卡片范围内时,使用Card::Suit来引用该类型。 ......实际上,你也应该像这样引用西装;我对Card.CLUBS编译感到有些惊讶,我一直以为你必须做Card::CLUBS

答案 1 :(得分:6)

Suit是类Card命名空间的一部分,请尝试:

Card::Suit suit = Card::CLUBS;