2010-05-20 56 views
8

Si tengo una clase simple como éste una carta:C++ pasar enumeración como parámetro

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

y luego quiero crear una instancia de una tarjeta en otro archivo, ¿cómo puedo pasar la enumeración?

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

de error: 'Traje' no estaba declarado en este ámbito

Sé que esto funciona:

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

pero ¿Cómo se crea una variable de tipo Traje en otro archivo?

+4

WTF, Card.CLUBS no le da un error ??? Creo que debe ser Card :: CLUBS ... x_x – mingos

Respuesta

12

Utilice Card::Suit para hacer referencia al tipo cuando no esté dentro del alcance de la tarjeta. ... en realidad, debería hacer referencia a los trajes así también; Estoy un poco sorprendido de que Card.CLUBS compile y siempre pensé que tenía que hacer Card::CLUBS.

+0

use Card.CLUBS ya que coincidirá con la pregunta. – kapilddit

6

Suit es parte del espacio de nombres de la tarjeta de la clase, a fin de tratar:

Card::Suit suit = Card::CLUBS; 
Cuestiones relacionadas