C++ Verwendung von enum class innerhalb einer Klasse

  • Ersteller Ersteller Crymes
  • Erstellt am Erstellt am
C

Crymes

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

Code:
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:
Code:
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 ?
 
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.

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.

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.
 
Danke für sie schnelle Antwort :daumen:
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.
 
Zurück