Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak to zrobić: enum z java na c++

Ostatnio zmodyfikowano 2015-02-17 20:02
Autor Wiadomość
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:
C/C++
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:
C/C++
public boolean increment() { // operation V
    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?
P-126697
maly
» 2015-02-17 08:55:18
Coś w ten deseń.
C/C++
struct Type
{
    // tych = 0 i = 1 w tym wypadku nie trzeba ale mogą być
    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 ==
P-126698
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:
C/C++
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";
}
P-126702
DejaVu
» 2015-02-17 20:02:51
C/C++
enum class Type { COUNTER, BOOL }; // enum class dostępny od C++11
//...
Type ble = Type::COUNTER;
P-126717
« 1 »
  Strona 1 z 1