Enum: '...' does not name a type



  • Moin,
    ich habe ein enum in einer Klasse gebildet. Von außen möchte ich auf das enum zugreifen, bekomme aber immer die Fehlermeldung "'Cmd' does not name a type".
    Woran liegt das?

    class A{
    public:
    
      enum Cmd
      {
        Cmd_a = '1',
        Cmd_b = '0'
      }
      unsigned char Buffer;
      Cmd getCmd(void) const;
    };
    
    Cmd A::getCmd() const
    {
      return static_cast<Cmd>(Buffer)
    }
    

    Edit durch Arcoth: Code-Tags.



  • 1. dir fehlen mindestens 2 Semikolons
    2. Der Typ heißt A::Cmd, das hier ist nicht C, sondern C++.

    Edit: mindestens 2 ; fehlen.



  • Moin,
    alles klar jetzt klappt es.

    Vielen Dank


  • Mod

    Namen, die in einer Memberfunktions-Definition vor dem Namen der Memberfunktion ( A::getCmd ) vorkommen, werden nicht innerhalb der Klasse sondern im Kontext der Definition, also im namespace scope, gesucht (cf.[basic.lookup.unqual]). Du kannst also, wie von meinem Vorposter vorgeschlagen, den Namen der Enumeration voll qualifizieren-- A::Cmd --, oder einen trailing return type schreiben:

    auto A::getCmd() -> Cmd const{...}
    

    (Wobei das für gewöhnlich nur bei Membern von Templates gemacht wird, da die template-id langatmig ist).


Anmelden zum Antworten