2010-05-20 194 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;