namespace über alles?



  • Hallo, ich bin es mal wieder^^. Und zwar habe ich vorhin ein Beispiel gesehen, in dem jemand um seine erstellten Klassen und Funktionen und ein namespace gepackt hat. Ist soetwas sinvoll? Sollte man sich z.B einen namespace Demian machen, in dem alles kommt, was ich geschrieben habe? So kann es wenigstens zu keiner überschneidung kommen... Was denkt ihr?



  • Also namespaces sind eigentlich nur sinnvoll wenn du Librarys programmierst.



  • Hmm, aber wenn ich viele Funktionen und Klassen später wiederverwenden will, so ist dass doch eigentlich auch eine libary, oder nicht?



  • Hallo

    ja dann kann man es ls Library betrachten udn ein umfassender Namespace ist sinnvoll.
    Aber der Name des Namespace sollte dann eher die Funktion(en) der Lib repräsentieren, anstatt einfach deinen Namen.

    bis bald
    akari



  • Naja, wie die Namespaces heißen müssen, steht ja nirgends. Wenn du deine Namespaces Demian nennen willst, dann mache das doch einfach. Ist ja dein Code! Und das man nur Libs in Namespaces packen soll, ist ja wohl auch weit her geholt. Wo steht das geschrieben? Nameskonflikte können schliesslich nicht nur zwischen Libs entstehen, sondern auch zwischen einem Anwendungscode und einem Librarycode.

    Ich packe z.B. alles in Namespaces.



  • hmm, hab gerade gemerkt, dass wenn ich std nicht in meinem namespace aufnehme, ich alles per hand zuordnen muss.

    namespace Xnet
    {
    	using namespace std;
    	response testServer(const char *_server, const unsigned short _port,
    	const unsigned short _sec);
    }
    

    jetzt hab ich 2 Fragen:
    1. Darf ich das mit dem using namepace machen?
    2. response ist ein enum, der im selben header definiert ist. Muss dieser in den scope?

    Dankeschön 😃



  • Solange du using namespace NICHT in einer Header-Datei drin hast, ist das völlig i.O. using namespace NUR in cpp-Dateien benutzen!

    Wenn response auch in std drin wäre, würde sich der Compiler melden, das er nicht weiß, welches response er nun nehmen soll. Dann müsstest du explizit davor schreiben, welches response du meinst. Was ja auch der Sinn von Namespaces ist... wäre ja sonst witzlos das ganze, oder?



  • hmm, strange, wenn ich enum in den namespace nehme, erkennt er es in der cpp-datei nicht mehr...
    header:

    namespace Rnet
    {
    	enum response {TRUE,FALSE,ERROR};
    	response testServer(const char *_server, const unsigned short _port,
    	const unsigned short _sec);
    }
    

    cpp:

    #include "RnetFunc.h"
    
    using namespace std;
    
    response testServer(const char *_server, const unsigned short _port,
    const unsigned short _sec)
    {
    

    Und wenn ich vor das response Rnet:: schreibe, so kennzeichnet er ALLES andere als nicht OK...

    ist das normal?



  • Dein Code ist ja auch falsch. 🙄

    #include "RnetFunc.h"
    
    using namespace std;
    
    Rnet::response Rnet::testServer(const char *_server, const unsigned short _port,
    const unsigned short _sec)
    {
    


  • Argh (verdammt, bräuchte jetzt ein "Mit-der-Hand-vor-den-Kopf-Schlag-Smiley")

    thx


Anmelden zum Antworten