Kein namespace using in Headern?



  • Habe gerade in Bruce Eckels Thinking in C++ (2nd Edition Volume 1, Chapter 4)
    gelesen, dass man keine Using-Direktiven in Header-Files benutzen soll:

    Bruce Eckel schrieb:

    In short: don’t put using directives in header files.

    Da frage ich mich aber etwas:
    So wie ich es gelernt habe, platziert man Klassen mit Definition in Header-Files:

    // Lautsprecher.h
    #ifndef LAUTSPRECHER_H
    #define LAUTSPRECHER_H
    
    class Lautsprecher
    {
        private:
          int volume;
    
        public:
          Lautsprecher(int volume);
          void turn_off();
    };
    
    Lautsprecher::Lautsprecher(int volume)
    {
        this->volume = volume;
    }
    
    void Lautsprecher::turn_off()
    {
        volume = 0;
    }
    
    #endif
    

    Aber wenn man keine Using-Direktiven in Headern benutzen soll (was ja durchaus seinen Sinn hat), wo soll man sie denn sonst benutzen? =O
    Ich meine, ansonsten hat man doch nur eine kleine "Main-Datei", in der die main-Funktion ist, die - sofern man sich denn auch schön an OOP und seinen Code sauber hält - keine X-hundert Zeilen Code hat; in dieser könnte man dann die Using-Direktiven verwenden.

    Oder sehe ich da etwas komplett falsch? 😕



  • Die Definition der Klasse sollte eigentlich in eine .cpp-Datei. Dort kannst du dann 'using ...' verwenden.
    In der .h-Datei sollte nur die Klassendeklaration stehen.



  • TuttiFrutti schrieb:

    Die Definition der Klasse sollte eigentlich in eine .cpp-Datei. Dort kannst du dann 'using ...' verwenden.
    In der .h-Datei sollte nur die Klassendeklaration stehen.

    Danke 🙂 ... ich bin so ein Nappel. Hab mir gedacht, bevor du weiterliest, klärst du erst mal deine Frage - toll, im nächstens Absatz stand dann

    You’ll usually put the declaration for each type or group of associated types in a separate header file, then define the functions for that type in a translation unit.


Anmelden zum Antworten