Summe geht nicht



  • Berth schrieb:

    Der Kompiler sagt mir keinen Fehler, aber kann nicht die Summe ausrechnen. Warum???

    int b = getValue(),
    
            printSum( a + b );
    
    }
    

    Komma zum Semikolon!



  • Obwohl deine Frage hier schon beantwortet wurde hätte ich noch eine Frage an dich Berth:
    Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?



  • amichian schrieb:

    Obwohl deine Frage hier schon beantwortet wurde hätte ich noch eine Frage an dich Berth:
    Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?

    manche stehen nun einmal auf dieses hässliche krypto zeug.
    🙂



  • amichian schrieb:

    Obwohl deine Frage hier schon beantwortet wurde hätte ich noch eine Frage an dich Berth:
    Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?

    😕 😕

    Was hast du denn (und der nachposter)??
    Was zum Teufel ist das Problem?



  • Ich bin noch ein ziemlicher Anfänger in C++ und hatte hinter der Schreibweise von Berth einen besonderen Sinn vermutet. Ich wollte ihn nicht kritisieren.



  • amichian schrieb:

    Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?

    Es macht keinen Sinn, einen Namensraum zu definieren, nur um ihn dann wieder mit einer using-Direktive auszuleeren. Darum macht man es nicht.


  • Mod

    Gugelmoser schrieb:

    amichian schrieb:

    Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?

    Es macht keinen Sinn, einen Namensraum zu definieren, nur um ihn dann wieder mit einer using-Direktive auszuleeren. Darum macht man es nicht.

    Warum? Wenn man weiß, dass man keine Konflikte verursacht ist das völlig legitim.



  • SeppJ schrieb:

    Gugelmoser schrieb:

    amichian schrieb:

    Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?

    Es macht keinen Sinn, einen Namensraum zu definieren, nur um ihn dann wieder mit einer using-Direktive auszuleeren. Darum macht man es nicht.

    Warum? Wenn man weiß, dass man keine Konflikte verursacht ist das völlig legitim.

    Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p



  • Gugelmoser schrieb:

    Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p

    Wofür denn, wenn ich fragen darf?



  • BlauesShirt schrieb:

    Gugelmoser schrieb:

    Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p

    Wofür denn, wenn ich fragen darf?

    Ordnung.



  • Bullshit.



  • Gugelmoser schrieb:

    SeppJ schrieb:

    Gugelmoser schrieb:

    amichian schrieb:

    Warum hast du in deinem Code nicht die Codezeile "using namespace std;" nicht eingefügt, um das aufwendige Schreiben von "std::" vor jedem cin oder cout zu vermeiden?

    Es macht keinen Sinn, einen Namensraum zu definieren, nur um ihn dann wieder mit einer using-Direktive auszuleeren. Darum macht man es nicht.

    Warum? Wenn man weiß, dass man keine Konflikte verursacht ist das völlig legitim.

    Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p

    So ein Quatsch.
    Namensräume kann man in Cpp-Dateien grundsätzlich ausschütten. Sollte es zum Konflikt kommen, was nicht oft der Fall ist, geht man den umständlichen Weg.



  • Kommt drauf an.

    Ich habe beispielsweise im namespace geometry eine Linienklasse und im namespace raster . Damit an der Deklaration von Variablen gleich sichtbar wird, um welche der beiden es sich handel, oeffene ich diesen Namensraum nicht, auch wenn nur eine Lienenart benutzt wird.



  • Sone schrieb:

    Ordnung.

    Kellerautomat schrieb:

    Bullshit.

    Damit hast du mal selbst argumentiert 🙄



  • Also bei größeren Projekten finde ich namespaces schon praktisch, weil man dadurch eben nochmal eine Ordnung in dem Sinne schaffen kann, dass man weiß, dass gewisse Klassen eben zu einem "Komplex" gehören. Selbst wenn es sich um irgendeinen Spezialbereich handelt, in dem es keine Namensüberschneidungen gibt, ist es einfach angenehmer zu wissen, was wozu gehört.

    Und dann können die namespaces auch kongruent zu anderen Ordnungselementen stehen, beispielsweise zur Ordnerstruktur im Dateisystem (oder zusätzlich auch im MSVC-Projekt) oder auch zu Modulen, die einzeln kompiliert werden können.

    Namenskonflikte gehen in meinen Augen aus fehlender Struktur/Ordnung hervor, sodass namespaces dieses Problem quasi im Keim ersticken.



  • Sone schrieb:

    Damit hast du mal selbst argumentiert 🙄

    Es stimmt schon, dass namespaces Ordnung schaffen koennen, aber das ist nicht ihr Hauptnutzen. Ihr beide habt das so hingestellt, als ware das deren einziger Zweck, und das ist einfach nicht wahr.



  • Kellerautomat schrieb:

    Sone schrieb:

    Damit hast du mal selbst argumentiert 🙄

    Es stimmt schon, dass namespaces Ordnung schaffen koennen, aber das ist nicht ihr Hauptnutzen. Ihr beide habt das so hingestellt, als ware das deren einziger Zweck, und das ist einfach nicht wahr.

    Konfliktvermeidung lässt sich in diesem Kontext auch auf Ordnung deduzieren, denn die Logik hierbei ist folgende:

    Ordnung ➡ Keine Konflikte 👍
    Keine Ordnung ➡ Es gibt Konflikte, weil die verschiedenen Namen nicht in Namensräumen eingeordnet wurden. ⚠

    Ein Namensraum ist schließlich wie eine Mappe, in der andere Mappen (andere Namensräume) oder eben auch Zettel (Namen) sind. Schmeisst man stattdessen alle Zettel in eine Mappe (Globaler Namespace), wird es unordentlich.



  • Gugelmoser schrieb:

    Finde ich nicht. Ein Namensraum ist ja auch nicht dafür da, um Konflikte zu vermeiden. :p

    Laut Stroustrup ist genau das aber IIRC ihr Zweck.



  • Meiner Meinung nach ist der Hauptzweck eines Namensraums die Einordnung der darin enthaltenen Dinge, wie Funktionen, Klassen, Objekte... Mittels using-Direktiven gehen die Klassifizierungen doch wieder verloren, dabei hat man sich doch vorher die Mühe gemacht, alles schön einzuordnen.
    Dass Namensräume Namenskonflikte vermeiden, ist doch nur ein netter Nebeneffekt.


  • Mod

    Die eigene Meinung ist nicht die Wirklichkeit. Den Fehler machen viele Leute.


Anmelden zum Antworten