using namespace in klassen



  • Hallo,

    ich habe irgendwo mal gelesen, dass man in Klassen kein using namespace benutzen soll. Leider finde ich die Quelle nicht mehr. Warum ist das so?

    Danke



  • Das stimmt ja auch nicht. Man darf using namespace nicht in Header-Dateien benutzen!



  • Artchi schrieb:

    Das stimmt ja auch nicht. Man darf using namespace nicht in Header-Dateien benutzen!

    ah gut zu wissen, warum nicht?



  • @artchi: Darf schon (zumindest verbietet es weder der Standard noch die heute verwendeten Compiler), aber man sollte es nicht machen, weil man dadurch das Namespace-System über den Haufen wirft.


  • Mod

    Artchi schrieb:

    Das stimmt ja auch nicht. Man darf using namespace nicht in Header-Dateien benutzen!

    Stimmt schon, je nach Lesart. Jedenfalls darf eine using Direktive nicht in einer Klassendefinition auftauchen (falls jemand Haare spalten will: nicht im Scope der Klasse - im Blockscope einer Funktionsdefinition in der Klassendefinition ist die Direktive selbstverständlich zulässig).

    using-Direktiven und using-Deklarationen sowie Namespacealias-Deklarationen (letztere, soweit sie nur der Bequemlichkeit dienen) sollten nicht auf Namespaceebene in Headern verwendet werden, weil sie das Namelookup auf sehr subtile Weise beeinflussen können und damit ggf. das Programm in Abhängigkeit der Reihenfolge der Inklusion der Header verändern.
    Gegen die Verwendung auf Blockebene spricht grundsätzlich auch in Headern nichts (alles was man hier vorbringen könnte, würde die Verwendung von unqualifizierten Bezeichnern im Allgemeinen treffen).


Anmelden zum Antworten