2010-05-20 29 views
8

Wenn ich eine einfache Klasse wie diese für eine Karte haben:C++ übergeben Enumeration als Parameter

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

und ich möchte dann eine Instanz einer Karte in einer anderen Datei erstellen, wie ich die Enum passieren kann?

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

Fehler: 'Anzug' wurde nicht in diesem Bereich erklärt

Ich weiß, das funktioniert:

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

aber wie erstelle ich eine Variable vom Typ Anzug in einer anderen Datei?

+4

WTF, hat Card.CLUBS nicht geben Sie einen Fehler ??? Ich würde denken, dass es Card :: CLUBS sein muss ... x_x – mingos

Antwort

12

Verwenden Sie Card::Suit, um den Typ zu referenzieren, wenn er sich nicht im Gültigkeitsbereich von Card befindet. ... eigentlich solltest du auch so auf die Anzüge eingehen; Ich bin ein wenig überrascht, dass Card.CLUBS compiles und ich dachte immer, du musstest Card::CLUBS tun.

+0

verwenden Sie Card.CLUBS, da es mit Frage übereinstimmt. – kapilddit

6

Anzug ist Teil der Namespace-Klasse-Karte, so versuchen:

Card::Suit suit = Card::CLUBS; 
Verwandte Themen