Ne Frage zum Syntax



  • moin nochma, also ich wollte ma fragen was das hier immer bedeutet: z.B.

    std::string
    

    is jetzt nur daher gedacht, denn ich habe es shocn öfters gesehen aber nie gewusst was es heißt, kann mich einer aufklären ??



  • Hallo

    Das bedeute, dass die Klasse string aus dem namespace std verwendet werden soll. In cpp-Dateien kannst du auch

    using namespace std;
    str Test;
    

    schreiben, weil du damit dem anzeigst, wo gesucht werden soll. Die dritte Varinate:

    using std::string;
    str Test;
    

    Auch nicht schlecht. Hier wird praktisch nur für eine Klasse gesagt, wo gesucht werden soll.

    chrische



  • also is das nix weiter als ne definitionsangelegeheit, und das is mit using namspace std überhaupt gemeint??



  • man nennt das vor dem :: einen Namespace. Der Sinn der Sache ist es schlichtweg Namenskonflikte zu vermeiden.

    (Es gibt den std::string, GTKmm hat mit dem Glib::ustring einen eigenen string, wenn der jetzt auch ohne das 'u' geschrieben würde kann man den std::string und den Glib::string eben durch den namespace unterscheiden.)

    using namespace ist für faule Programmierer gedacht, die nicht jdes mal den namespace mittippen wollen, genauso das using.



  • ah ich glaube ich habe verstanden, es dient sozusagen zu verhinderung von namenskonflikten, das wenn ich 2 strings habe die fast genauso geschrieben, das die unterschieden werden und das ich sie im laufe des programmes auch immer unterschiedlich schrieben muss, richtig. also nur zu unterscheidung von strings die sich ähneln?



  • Hallo

    das wenn ich 2 strings habe die fast genauso geschrieben, das die unterschieden werden

    Nein, nicht fast genauso, sondern identisch. Inklusive Groß/Kleinschreibung.

    also nur zu unterscheidung von strings die sich ähneln?

    Nein für alle Symbole innerhalb der Namespace-Definition.

    Übrigens wird im Fall von std nicht "Strings" (sprich eine konkrete String-Instanz) auseinandergehalten sondern bestenfalls Stringklassen.

    bis bald
    akari



  • puhh dann is mien haus was ich mir gebaut habe wieder zusammen gefallen, das is mir noch net so ganz klar was damit gemeint is, kann ma jemand ein beispeil anbringen, damit ich weiß was gemeint ist?



  • Dieser Thread wurde von Moderator/in Marc++us aus dem Forum Rund um die Programmierung in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo

    Nehmen wir mal an du arbeitest mit einem anderem zusammen an einem gemeinsamen Projekt. Zufälligerweise hat jeder von euch in seinem Teil Quellcode eine Funktion int func(int x) mit gleichem Prototyp aber verschiedener Funktionalität eingebaut, die jeweils projektweit verfügbar sein sollen.
    Nun weiß aber der Compiler nicht mehr was dieser Aufruf

    func(10);
    

    machen soll... er wird deshalb mit einen Fehler zur Mehrdeutigkeit von func abbrechen.

    Das könntest du umgehen indem du und dein Mitarbeiter je einen eigenen Namespace benutzt. Das heißt du schließt deinen gesammten Quellcode in den Namespace space1 ein und dein Mitarbeiter in space2.

    // Dein Quellcode
    namespace space1
    {
      int func(int x)
      {
        // ...
      }
    }
    
    // Quellcode deines Mitarbeiters
    namespace space2
    {
      int func(int x)
      {
        // ...
      }
    }
    

    Nun kann dem Compiler geholfen werden die beiden Funktionen zu unterscheiden

    space1::func(10); // Aufruf deiner Funktion
    space2::func(10); // Aufruf der Funktion deines Mitarbeiters
    

    Soetwas braucht man vor allem bei abgeschlossen Librarys für externen Gebrauch. Eben deshalb hat die STL bereits den Namespace std. Denn nun kannst du selber immer noch eine eigene string-Klasse definieren.. oder eine fill-Funktion.

    bis bald
    akari



  • ahh klasse das war sehr logisch, danke für die super erklärung 😉



  • Auch von mir ein grosses DANKESCHOEN an akari. Das hast Du wirklich hervorragend erklaert.

    Guenther



  • PS: zur Syntax


Anmelden zum Antworten