Schreibweisen für Funktionen in Namespaces
-
Hallo,
bisher habe ich die Namen meiner Namespaces meistens ausgeschrieben.
Jetzt bin ich auf die ::function-Notation gestoßen und frage mich,
ob es für bestimmte andere Fälle auch kürzere Schreibweisen gibt.#include <fstream> #include <iostream> void bar(){ std::cout << "-" << std::endl; } namespace foo{ void bar(){ std::cout << "foo" << std::endl; } namespace a{ void bar(){ std::cout << "foo::a" << std::endl; } } namespace b{ void bar(){ std::cout << "foo::b" << std::endl; } void foobar(){ bar(); ::bar(); foo::bar(); // <- Hierfür ne andere Schreibweise foo::a::bar(); // <- Hierfür ne andere Schreibweise } } } int main(int argc, char** arg) { foo::b::foobar(); return 0; }foo::b
foo
foo::aGibt es für die gekennzeichneten Zeilen alternative Schreibweisen?
Also irgendetwas für eine Namespace-Ebene hoch...Gruß,
Mark
-
namespace fa = foo::a;Aber grundsätzlich halte ich Schachtelungen tiefer als zwei Ebenen in den meisten Fällen für fragwürdig. Die Gliederung wird dadurch nicht zwangsläufig besser. Bei einer Bibliothek würde ich persönlich darauf achten, dass die meisten Bezeichner im Top-Level-Namensraum sind, und vielleicht einzelne zusammengehörige Funktionalität oder der Scope von Enums in geschachtelten Namensräumen.
-
boost::asio::ip::tcp::resolver::iterator

-
Nexus schrieb:
namespace fa = foo::a;Guter Vorschlag!!!
Hab ich noch nie verwendet, obwohl ich es schon häufiger gesehen habe.Ich wollte auch maximal 3 Ebenen verwenden.