C++传递枚举作为参数

Spe*_*cer 11 c++ parameters enums

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

class Card {
        public:
            enum Suit { CLUBS, DIAMONDS, HEARTS, SPADES };
            Card(Suit suit);
    };
Run Code Online (Sandbox Code Playgroud)

然后我想在另一个文件中创建一个卡的实例如何通过枚举?

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

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

我知道这有效:

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

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

das*_*ang 13

用于Card::Suit在不在Card范围内时引用类型.......实际上,你也应该像这样引用西装; Card.CLUBS编译时我有点惊讶,我一直认为你必须这样做Card::CLUBS.


小智 6

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

Card::Suit suit = Card::CLUBS;
Run Code Online (Sandbox Code Playgroud)