Verschachtelte namespaces



  • Hallo ich habe eine Frage zu verschachtelten namespaces. Ich weiß das es dazu verschiedene Philosophien gibt, aber ich möchte zugunsten der Lesbarkeit in einer Library verschiedene Module und deren Untermodule über namespaces wie folgt handhaben

    In Modul foo.hpp

    namespace mylib {
      namespace foo {
        namespace io {
          void load();
    }}}
    

    Und in Modul boo.hpp

    namespace mylib {
      namespace boo {
        namespace io {
          void load();
          void do_anything()
    }}}
    

    Wenn ich aber nun in do_anything die Methode load aus dem Modul foo ansprechen will,

    void mylib::boo::io::do_anything() {
       mylib::foo::io::load();
    }
    

    bekomme ich eine Fehler derart:

    error: ‘mylib::foo’ has not been declared

    Kann mir jemand sagen ob das überhaupt nicht geht was ich vorhabe oder wo könnte ich nach dem Problem fahnden?

    Vielen Dank für jegliche Tipps.


  • Mod

    Dein Fehler liegt nicht bei den Namensraeumen (siehe auch diesen Code bei Ideone). Sondern eher an zyklischen Abhaengigkeiten o.ae.

    Poste mal die Sources und Header.



  • Vielen Dank Arcoth,

    Dein Hinweis war schon genug. Das Stichwort zyklische Abhängigkeiten ließ mir die Schuppen von den Augen fallen. Ich hatte natürlich in beiden Modulen die Files io.hpp von der Auto-Code-Generierung mit

    #ifndef IO_HPP
    #define IO_HPP

    #endif

    austatten lassen.

    Peinlich, aber na ja! 1000 Dank


Log in to reply