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
-
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).