Jak to zrobić: enum z java na c++
Ostatnio zmodyfikowano 2015-02-17 20:02
chincher Temat założony przez niniejszego użytkownika |
Jak to zrobić: enum z java na c++ » 2015-02-17 08:40:23 Witam. Obecnie przerabiam program z javy na c++. I niestety nie wiem jak zastąpić enum z Javy ten w c++. Czy może zrobić klasę? kod wygląąda następująco: public enum Type { TYPE_COUNTER( 0 ), TYPE_BOOL( 1 ); int id; Type( int id ) { this.id = id; } } i np odwołanie się do niego w takiej oto funkcji: public boolean increment() { if( type == Type.TYPE_BOOL ) { if( this.occupied ) { return false; } occupied = true; return true; } if( counter < 0 ) { counter = 0; } counter += 1; return true; } czy da się w ogóle zastąpić jakoś ten enum, tak, żeby można się było odwoływać jak na kodzie powyżej? |
|
maly |
» 2015-02-17 08:55:18 Coś w ten deseń. struct Type { enum { TYPE_COUNTER = 0, TYPE_BOOL = 1 }; int id; Type( int id ) : id( id ) { } }; if( type.id == Type::TYPE_BOOL ) lub if( type == Type::TYPE_BOOL ) ale trzeba zdefiniować odpowiedni operator == |
|
Fireho |
» 2015-02-17 11:03:13 A nie wystarczy zwykły enum? Po prostu enum Type { COUNTER = 0, BOOL = 1 }; i tyle. Potem możesz to wykorzystać np. tak: Type costam = static_cast < Type >( 1 ); Type inne = Type::COUNTER;
if( costam == Type::BOOL ) { std::cout << "costam ma wartosc bool\n"; } if( inne == Type::COUNTER ) { std::cout << "inne ma wartosc counter\n"; } |
|
DejaVu |
» 2015-02-17 20:02:51 enum class Type { COUNTER, BOOL };
Type ble = Type::COUNTER;
|
|
« 1 » |