2010-05-20 142 views
8

如果我有一个简单的类像这样的卡:C++通过枚举作为参数

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; 
} 

错误:“套装”不是在这个范围内

宣布我知道这个工程:

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

但我怎么在另一个文件创建类型西装的变量?

+4

跆拳道,Card.CLUBS不会给你一个错误???我认为它需要是Card :: CLUBS ... x_x – mingos 2010-05-20 00:29:14

回答

12

使用Card::Suit来引用不在卡范围内的类型。实际上,你也应该参考这样的诉讼。我有点惊讶,Card.CLUBS编译,我一直认为你必须做Card::CLUBS

+0

使用Card.CLUBS,因为它会与问题匹配。 – kapilddit 2012-07-09 13:23:06

6

西装是类卡的命名空间的一部分,所以尝试:

Card::Suit suit = Card::CLUBS;