# C++ Verwendung von enum class innerhalb einer Klasse



## Crymes (30. Juni 2016)

Hallo,
ich hab mich in C++ mit den enum-Klassen beschäftigt und noch ein paar Fragen.
Ich habe folgende Klasse:


```
class A
{
private:
      std::atomic<Status> s;

public:
      enum class Status {a, b, c};      
      Status getStatus();
}
```

und außerdem würde ich gern folgendes machen:

```
int main()
{
        Testclass A();
        if(A.getStatus() == A::Status::b)
        {

        }
}
```

- Werden Compiler meckern wenn ich Status in A verwende bevor ich es deklariere, bzw. ist das so üblich?
- Kann ich wie oben geschrieben die Variable s einfach so wie z.B. ein int atomic machen?
- Muss ich in A besser A::Status getStatus() schreiben ?


----------



## bingo88 (30. Juni 2016)

Crymes schrieb:


> Werden Compiler meckern wenn ich Status in A verwende bevor ich es deklariere, bzw. ist das so üblich?


Ja, das geht nämlich nicht. Du musst den Typ vorher deklarieren. Tausche einfach den private und den public Block.



Crymes schrieb:


> Kann ich wie oben geschrieben die Variable s einfach so wie z.B. ein int atomic machen?


Ja. Laut Spezifikation sollte das nur ein trivially copyable Type sein, also einfach zu kopieren. Ist bei nem enum aber gegeben.



Crymes schrieb:


> Muss ich in A besser A::Status getStatus() schreiben ?


Nein, A kennt ja den eigenen Scope. Das müsstest du nur bei Namenskollisionen machen. Wenn du die Methode allerdings außerhalb der Klasse definierst, dann muss der Scope davor.


----------



## Crymes (30. Juni 2016)

Danke für sie schnelle Antwort 
Hätte jetzt noch ein paar Fragen zur Fehlerbehandlung in Konstruktoren aber das wird glaub was längeres, da mach ich nen neuen Thread auf.


----------

