eure Erfahrung



  • guckt euch mal die ganzen c++ projekte auf sourceforge an...schrecklicher c++ code & style.



  • Naja Templates (ausser einem MFC-CArray) hab ich noch nie benutzt geschweige denn mir eins geschrieben. Ehrlich gesagt ich wüsste jetzt auch nicht wozu ich das brauche... sooo Allgemein sind meine Klassen ja noch nicht das ich sie woanders weiterbenutzen könnte.

    naja und Namespaces... hier kenn ich nichtmal die richtige bedeutung. Ich weis halt nur das man usingnamespace std schreiben kann/muss und dann einfach vor allen Befehlen einen :: setzen muss. Naja 🙄



  • Ich habe bis jetzt in den letzten Jahren immer nur in Ansi C programmiert. Aber jetzt habe ich mir mal das Buch C++ für C Programmierer bestellt.



  • :-() schrieb:

    guckt euch mal die ganzen c++ projekte auf sourceforge an...schrecklicher c++ code & style.

    das kann man so allgemein nicht sagen. Ich denke die Projekte reichen von pfui bis hui 🙂



  • wirklich? ich hab bis jetzt noch keins gefunden wo ich "hui" sagen könnte. 😉

    entweder hab ich die falschen angeguckt oder wir beurteilen das anders.

    kannst du kurz ein paar namen sagen von den guten projekten in c++? 😉



  • http://sourceforge.net/projects/loki-lib
    http://giallo.sourceforge.net/

    fallen mir da spontan ein, wobei man sicher mehr findet, wenn man sucht.



  • Chris++ schrieb:

    [...]
    naja und Namespaces... hier kenn ich nichtmal die richtige bedeutung. Ich weis halt nur das man usingnamespace std schreiben kann/muss und dann einfach vor allen Befehlen einen :: setzen muss. Naja 🙄

    Programmierer A schreibt ein programm, das beinhaltet die Funktion "DoIt" (nur beispiel, gibt bestimmt bessere)

    void DoIt()
    {
     //irgendwas tun
    }
    

    Jetzt will er einen Teil vom Code von Programmiere B einbauen(der den Code natürlich freigegeben hat)

    Dieser hat aber auch eine Funktion namens "DoIt"

    void DoIt()
    {
     //irgendwas anderes tun
    }
    

    Der Compiler wird(sollte) jetzt aber einen Fehler ausgeben: Mehrfache Deklaration von DoIt o.ä.

    Lösung? Namespaces

    Programmierer A schreibt jetzt so:

    namespace A
    {
    (andere Funktionen)
    
    void DoIt()
    {
     //irgendwas tun
    }
    
    }//Namespace A Ende
    

    Und Prog. B:

    namespace B
    {
    (andere Funktionen)
    
    void DoIt()
    {
     //irgendwas anderes tun
    }
    
    }//Namespace B Ende
    

    Und schon meckert der Compiler nicht mehr. 👍

    Wenn A jetzt das DoIt von B ausführen will muss er B::DoIt() schreiben.

    hoffe dir ist jetzt klarer wozu die benutzt werden(auch wenn ich bestimmt nicht so gut erklären kann wie andere) 🙂



  • geht auch so, ohne namespace

    struct A
    {
       static void DoIt()
       {
          puts ("Hello A");    
       }       
    };
    
    struct B
    {
       static void DoIt()
       {
          puts ("Hello B");    
       }       
    };
    
    ...
        A::DoIt();
        B::DoIt();
    ...
    


  • @Net:
    Und ich danke Gott jeden Tag für die Namespaces, damit mir soetwas erspart bleibt.



  • SeppSchrot schrieb:

    @Net:
    Und ich danke Gott jeden Tag für die Namespaces, damit mir soetwas erspart bleibt.

    Man muss hierbei natürlich nicht erwähnen das Gott == Stroustrup 🤡

    Edit: Ich sehe das Gott in Bezug auf C++ und Namespaces und nicht auf Namespaces Allgemein



  • SeppSchrot schrieb:

    @Net:
    Und ich danke Gott jeden Tag für die Namespaces, damit mir soetwas erspart bleibt.

    mir auch. als echter c-freak kann ich keine funktionen in structs stecken, da nehm' ich einfach zwei verschiedene .c files und setz' 'static' vor die funktionen. falls ich tatsächlich beide irgendwo benutzen muss, nenn' ich sie einfach A_DoIt() und B_DoIt(). also namespaces hab' ich echt nie vermisst.



  • ich rede ja auch nicht davon das du in deinem eigenen code keine 2 gleichen funktionen hast.sondern wenn du code von jemand anderem benutzen willst.da kannste nicht ausschließen das der ne funktion,variable usw. genauso benannt hat wie du.

    wenn du natürlich nie anderen code benutzt sondern alles selber schreibst und den code auch nie der öffentlichkeit verfügbar machen willst:
    auch gut 🙄



  • Beliah schrieb:

    ich rede ja auch nicht davon das du in deinem eigenen code keine 2 gleichen funktionen hast.sondern wenn du code von jemand anderem benutzen willst.

    ja, das stimmt. dafür sind namespaces wirklich gut zu gebrauchen.



  • Hallo,

    auf Templates würd ich nicht zwanghaft verzichten müssen wollen, allerdings sind sie bei mir auch eher Mangelware. Ich verwende
    sie eben nur dann, wenn sie Sinn machen. Aber Spielerein wie Meta-Templates etc. erlaub ich mir in einem Projekt sicher nie.

    Namespaces verwend ich häufiger, schon allein zur logischen Gliederung. Meistens habe ich sie auf 2 oder 3 Ebenen geschachtelt.
    "Globale" Funktionen oder Klassen (also die in keinem Namespace sind) find ich ehrlich gesagt sogar schon etwas "hässlich".

    grüße



  • net schrieb:

    falls ich tatsächlich beide irgendwo benutzen muss, nenn' ich sie einfach A_DoIt() und B_DoIt(). also namespaces hab' ich echt nie vermisst.

    Und genau das nennt sich namespace 😉


Anmelden zum Antworten