Zeichenkette als Rückgabewert??



  • Neo2k3 schrieb:

    Das Problem ist ja, dass jetzt z.B. cout nicht mehr funktioniert.

    Dann qualifizier den Namensbereich eben, d.h. pack ein 'std::' davor. Oder tu was Artchi Dir gesagt hat und füge 'using namespace std' in Deine 'main'-Methode ein.



  • ok, wenn ich vor cout und endl auch ein std schreibe gehts. Ich werd mich noch mal schlau machen müssen über diese std-Klasse. Gibts da irgendwo ein gutes Tutorial??

    Ansonsten danke für eure Hilfe 🕶



  • 'std' ist keine Klasse sondern ein Namensbereich, der alle Klassen und Methoden der Standardbibliotheken von C++ umfasst.

    Mit anderen Worten: Alles, was irgendwo in den Headern der Standardbibliothek deklariert ist, befindet sich im Namensbereich 'std'. Um diese Typen also zu benutzen, muss man diesen Namensbereich "betreten". Das geht auf vier verschiedene Weise:

    1. Durch Erweitern des Namensbereichs:

    namespace std {
        // hier kann alles aus 'std' verwendet werden, ohne es explizit zu sagen
    
        void foo()
        {
            cout << "Ich bin in std" << endl;
        }
    }
    

    2. Durch explizites Qualifizieren bei jedem Benutzen:

    void foo()
    {
        std::cout << "Ich benutzte std explizit" << std::endl;
    }
    

    3. Durch Benutzen des Namensbereichs ('using'-Direktive):

    void foo()
    {
        using namespace std;
        cout << "Ich benutzte std implizit" << endl;
    }
    

    4. Durch Benutzen von Namen innerhalb des Bereichs ('using'-Deklaration):

    void foo()
    {
        using std::cout;
        // Achtung: 'cout' braucht keine Qualifizierung von 'std', 'endl' braucht sie!
        cout << "Ich benutze std::cout" << std::endl;
    }
    

    Ich hoffe, das macht es klarer.



  • Jo verstanden!!
    Aber wieso konnte ich vorher ohne irgendeine using-Direktive oder explizite Anweisung cout und endl benutzen und jetzt auf einmal nicht mehr??



  • Ahh ich habs:
    Vorher hatte ich als Header die iostream.h eingebunden und jetzt nur noch iostream nach dem Standard.
    http://tutorial.schornboeck.net/groessten_luegen.htm



  • Neo2k3 schrieb:

    Jo verstanden!!
    Aber wieso konnte ich vorher ohne irgendeine using-Direktive oder explizite Anweisung cout und endl benutzen und jetzt auf einmal nicht mehr??

    Vorher hattest Du doch ziemlich am Anfang des Codes 'using namespace std' stehen, oder? Das galt dann für den gesamten nachfolgenden Code.

    Das Problem hierbei: Es gilt eben wie gesagt für den gesamten nachfolgenden Code und das ist eigentlich meistens nicht wünschenswert.



  • Ich empfehle dir ein vernünftiges Buch in dem mal alles genau beschrieben wird. Aber das Tutorial von Schornboeck.de ist sehr gut, aber eines dieser Bücher ist trotzdem zu empfehlen:

    http://www.kharchi.de/cpp_buecher.html


Anmelden zum Antworten