Zugriff auf enum Elemente aus einer anderen Klasse



  • Hallo Leute, ich habe ein Problem mit einem Zugriff auf ein enum. Ich versuche mein Problem mal an dem Beispielcode zu verdeutlichen. Ich habe zwei Klassen und erzeuge in der 2.Klasse ein Objekt (obj_clA) der 1.Klasse und greife auf die Struktur zu, die zwei enums enthällt. Und jetzt kommt das Problem. In der switch-case Anweisung prüfe ich den aktuellen Zustand von obj_clA->zustand->sZustand1 und möchte eine Aktion anhängig von dem Zustand ausführen, aber scheinbar mache ich einen Fehler in der case Zeile (obj_clA->eA1). Bei der Fehlerausgabe steht: '->' cannot appear in a constant-expression

    Ich habe auch schon versucht ein Objekt von dem enum zu erzeugen und über dieses an den Inhalt zu kommen, hat aber nicht geklappt.

    // clA.h, Header der 1. Klasse
    class clA
    {
    public:
       enum eTest{
            eA1,
            eA2
       };
    
       struct sTest{
            enum eTest sZustand1;
            enum eTest sZustand2;
       }
    
       clA();
       sTest *zustand;
    };
    
    // Konstuktor zu clA in clA.cpp
    clA::clA(){
       zustand = new sTest();
    }
    
    // clB.h, Header der 2.Klasse
    #include "clA.h"
    class clB
    {
    public:
        clB();
        clA *obj_clA;
        void testFunc();
    }
    
    // clB.cpp
    clB::clB(){
        obj_clA = new clA();
    }
    
    clB::testFunc(){
       switch(obj_clA->zustand->sZustand1)
       {
       case obj_clA->eA1:
          blabla;
          break;
    
       case obj_clA->eA2:
          blabla;
          break;
    
       }
    }
    

    Ich hoffe jemand hat Ideen, wie es lösen kann und Danke schonmal für eure Mühe.



  • case clA::eA1:



  • Vielen Dank für die schnelle Antwort, es hat geklappt. Beim kompilieren habe ich keine Fehler mehr 🙂


Log in to reply