Const-Elemte und enum in klasse, wir realisierbar



  • Hallo,

    wie kann ich sowas realisieren?
    <<pseudocode>>

    class test
    {
     public:
    
       test():Names[0]("open"),Names[1]("closed"),Style(open){}  
       string& ReturnState()
          {
           return Names[Style];
          }
     private:
    
      const string Names[2];   //wie kann ich dies initialisieren?
      enum styles{open,closed}       Style;   //kann ich das enum so verwenden (da im provate bereich)?
    };
    


  • Hallo

    mach Names statisch

    class test
    {
      private :
      enum styles{open,closed}       Style;   // private schon, aber deklariert werden muß es vor dem ersten Gebrauch
    
     public:
    
       test():Style(open){}  
       string& ReturnState()
          {
           return Names[Style];
          }
     private:
    
      static const string Names[2];   //wie kann ich dies initialisieren?
    };
    
    // Implementation
    const string test::Names[2] = {"open", "closed"};
    

    bis bald
    akari



  • @akari
    Zwei Anmerkungen:
    a) Es gibt keinen technischen Grund dafür die Deklaration von styles an den Anfang der Klasse zu schieben.
    b) ReturnState muss entweder den String "by-value" liefern oder aber als Referenz-auf-const.



  • Hallo

    @CStoll
    a : stimmt, hätte nicht gedacht das der Compiler da nicht seine übliche strenge "von-oben-nach-unten" Regel anwendet
    b : stimmt auch, hab ich gar nicht drauf geachtet

    bis bald
    akari



  • akari schrieb:

    @CStoll

    Hume 😉

    akari schrieb:

    a : stimmt, hätte nicht gedacht das der Compiler da nicht seine übliche strenge "von-oben-nach-unten" Regel anwendet

    Innerhalb einer Klassendefinition betrachtet der Compiler immer die gesamte Klasse.


Anmelden zum Antworten