hallo world



  • ja im buch wird schon alles sehr genau beschrieben und auch auf typische Fehler hingewiesen zu dateitypen und schleifen habe ich viele Beispiele mit Aufgaben bekommemn aber dieses std wurde einfach ausgelassen ich hab auch im glossar nach geschaut aber wurden nochmal die Seiten aufgelistet, in denen es nochmal auftaucht. Ich denke ich kann erstmal ohne genaues wissen darüber leben und immer braf mitschreiben, stört ja auch nicht, und ich werd ja auch was programmieren können ohne jede schreibweise zu verstehen, vielleicht nehm ich mir noch ein Tutorial dazu um andere schreibweisen zu sehen.



  • Ach so, du bist schon wesentlich weiter?
    Dann google mal nach c++ namespace.



  • ich hab auch sehr selten internet zugang (alle 2 wochen am we) ich überlege mir aber einen Lidel Internetstick zu holen, anderer seits kann ich mir meine fragen aufschreiben und alle 2 wochen mal ne seschen einlegen mit googleln chatten und forum



  • ja das nechste kapitel ist über Ein- Ausgabe



  • Sone schrieb:

    Osbios schrieb:

    In std befinden sich unter anderem die Funktionen cout und endl.

    cout ist eine Funktion? oO

    Osbios schrieb:

    Man könnte den Code so schreiben:

    #include <iostream>
    
    void main()
    {
        std::cout << "hallo welt" << std::endl;
    }
    

    Was zum..? Welcher Compiler schluckt diesen Code?

    Der Korrektheit zur Liebe: std::cout ist ein Objekt mit einer Methode für den << Operator.

    Ich weiß jedoch nicht was an dem Code auszusetzen ist.



  • void main() ist schon seit C++98 nicht standardkonform.



  • ...ja das hallo welt hab ich nur so jetzt aus dem internet, ich programmiere mit code::blocks und gcc. also void ist wohl auch so ein daten typ und nicht mehr aktuell oder wie?...

    zu namespace
    also ist das so eine art vriablen deffinition ?

    void f() { ; } // Funktion auffindbar im globalen Namensraum
    namespace MTF
    {
    void f() // Funktion auffindbar im Namensraum MTF
    {
    throw std::exception("f - ausgelöst");
    };
    }
    Im Folgenden der Aufruf:
    void g()
    {
    f(); // f() aus globalem Namensraum wird aufgerufen
    MTF::f(); // f() aus Namensraum MTF wird aufgerufen
    using namespace MTF; // Namensraum MTF wird sichtbar gemacht
    f(); // f() aus Namensraum MTF wird in diesem Fall aufgerufen
    }



  • Ich habe auch dieses Buch und soweit bin ich klar gekommen. Namensräume werden ab Seite 141 näher erläutert. Viel spaß 🙂



  • hey cool



  • [quote="Sone"]

    cout (und endl) ist irgendwo definiert.

    Irgendwo? Nein, nicht irgendwo. In <ostream> .
    [quote]
    Also doch irgendwo?!



  • Ach übrigens: cout ist bei mir in iostream.



  • Nathan schrieb:

    Ach übrigens: cout ist bei mir in iostream.

    Ich wette meinen linken Daumen, dass du nicht verstehst was die Begriffe Deklaration und Definition in C++ bedeuten, und nur die Deklaration gefunden hast. 😉
    (Das merkt man schon an der Aussage: "[...] ist bei mir in iostream")


  • Mod

    Sone schrieb:

    Nathan schrieb:

    Ach übrigens: cout ist bei mir in iostream.

    Ich wette meinen linken Daumen, dass du nicht verstehst was die Begriffe Deklaration und Definition in C++ bedeuten, und nur die Deklaration gefunden hast. 😉
    (Das merkt man schon an der Aussage: "[...] ist bei mir in iostream")

    cout ist auch nicht in ostream definiert.



  • Warum den linken? Den rechten willst du wohl nicht verlieren, was? :p
    Mit "ist in iostream" meinte ich "ist in iostream deklariert".
    Die Definition von cout wird vermutlich in irgendeinem *.cpp-File.

    Edit: Menno, Sepp war schneller.



  • Nathan schrieb:

    Warum den linken? Den rechten willst du wohl nicht verlieren, was? :p
    Mit "ist in iostream" meinte ich "ist in iostream deklariert".
    Die Definition von cout wird vermutlich in irgendeinem *.cpp-File.

    Gut, gut. Es ging nur gerade um die Definition, da hörte es sich so an...

    SeppJ schrieb:

    Sone schrieb:

    Nathan schrieb:

    Ach übrigens: cout ist bei mir in iostream.

    Ich wette meinen linken Daumen, dass du nicht verstehst was die Begriffe Deklaration und Definition in C++ bedeuten, und nur die Deklaration gefunden hast. 😉
    (Das merkt man schon an der Aussage: "[...] ist bei mir in iostream")

    cout ist auch nicht in ostream definiert.

    Ja, stimmt. Frag nicht wieso ich das im Kopf hatte. Es war wegen dem Wikipedia-Artikel, der immer verlangt hat, dass <ostream> eingebunden wird. Daher hatte ich bis jetzt komischerweise gedacht, das... 😕 sry



  • Zenter schrieb:

    Ich habe auch dieses Buch und soweit bin ich klar gekommen. Namensräume werden ab Seite 141 näher erläutert. Viel spaß 🙂

    Jau. Und auf Seite 32, im Kapitel "Das erste Programm", wird das auch so beschrieben, daß using namespace später noch genauer erklärt wird. Mit Seitenangabe. Und dort steht auch int main().



  • küche schrieb:

    ...ja das hallo welt hab ich nur so jetzt aus dem internet, ich programmiere mit code::blocks und gcc. also void ist wohl auch so ein daten typ und nicht mehr aktuell oder wie?...

    zu namespace
    also ist das so eine art vriablen deffinition ?

    void f() { ; }  // Funktion auffindbar im globalen Namensraum
    namespace MTF            
    { 
      void f() // Funktion auffindbar im Namensraum MTF
      {
        throw std::exception("f - ausgelöst");
      };
    }
    Im Folgenden der Aufruf:
    void g()
    {
      f();                       // f() aus globalem Namensraum wird aufgerufen
      MTF::f();                  // f() aus Namensraum MTF wird aufgerufen
      using namespace MTF;       // Namensraum MTF wird sichtbar gemacht
      f();                       // f() aus Namensraum MTF wird in diesem Fall aufgerufen
    }
    

    using namespace sagt dem compiler, dass er auch in MTF suchen soll. Der letzte Aufruf von f() ist nicht eindeutig und der Compiler würde mecken.

    Dort müsste: ::f(); oder MTF::f(); stehen.



  • Sone schrieb:

    [...]
    Ja, stimmt. Frag nicht wieso ich das im Kopf hatte. Es war wegen dem Wikipedia-Artikel, der immer verlangt hat, dass <ostream> eingebunden wird. Daher hatte ich bis jetzt komischerweise gedacht, das... 😕 sry

    Hast Du auch nachgedacht und mal überlegt, warum das so ist? Oder hast Du danach das Denken aufgegegeben (Der Grund ist mit C++11 übrigens hinfällig geworden).



  • Ja, das Problem ist, std::ostream (bzw. basic_ostream ) wird ja in <ostream> definiert. Das hatte ich so verstanden. Dann hatte ich aber komischerweise in Erinnerung, dass auch std::cout dort definiert wurde. Das ist alles.



  • könnte man die MTF nicht ohne namespac deklarieren? und aufrufen, oder ist namespaces ein dateityp? P.S ich kann jetzt vom meinem Praktikum ans Internet


Anmelden zum Antworten