Hier ist ein Code-Snippet, um meine Frage zu demonstrieren.C++ using-declaration with enums: Wie importiert man alle enum-Einträge?
namespace N{
enum E { A, B, C, D };
}
int main(){
using N::E;
E e = A; // syntax error: 'A' is not declared
}
Die letzte Zeile gibt mir einen Syntaxfehler. Ich möchte die Namen N::A
, N::B
, N::C
und N::D
in der Hauptfunktion ohne den Namensraum Qualifier N::
verwenden. Aber ich nicht wollen die folgenden zwei Dinge tun
(1) Ich will nicht using namespace N
sagen, denn das alles andere in N.
(2) I don importieren würde will nicht sagen using N::A
, using N::B
, etc für jedes Mitglied der enum. Wenn ich dann die Enumeration modifizieren will, muss ich auch meine Hauptfunktion ändern. Ganz zu schweigen davon, dass das zusätzliche Tippen mühsam und fehleranfällig ist.
Ich versuchte selbst eine Antwort zu suchen, konnte aber nicht. Jede Hilfe wird geschätzt.
Nun, das ist schlau! –
@aschelpler Ihre Antwort scheint eine Lösung für mein Problem zu sein. Ich frage mich, was das Inline-Schlüsselwort mit einem Namespace tut. Ich habe versucht, den Code ohne Inline zu kompilieren und das funktioniert gut. – HazySmoke
Ohne 'inline' können Sie nicht mehr' N :: E' oder 'N :: A' in einem Kontext sagen, in dem richtlinien nicht verwendet werden. Ich dachte, du würdest nicht alle zwingen wollen, es zu benutzen. – aschepler