[C++] Namespaces wechseln

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von .x-tra, 2. Februar 2014 .

Schlagworte:
  1. 2. Februar 2014
    Und zwar...eigentlich eine dumme Frage, aber ich bin c++ neuling und wüsste gern darauf eine antwort.
    Und zwar wenn man z.b. ohne direkt einen namespace festzulegen std::cout nimmt ist alles klar.cout aus dem namespace standard.
    Aber was ist wenn man einen namespace nun zu beginn festlegt um sich solche sahcen wie std:: zu sparen und am ende gibt es doch gleichnamige funktionen.
    Man kann doch sicher mehrere namespaces zur nutzung "einstellen", oder?
    Oder muss man dann immer wechseln?bzw. wie funktioniert das überhaupt?
    Immer den namespace:: anzugeben ist schon sehr aufwendig
     
  2. 2. Februar 2014
    AW: [C++] Eine kurze FRage zu Namespaces

    Ich versteh nicht genau was du willst, aber ich glaube die willst nicht immer std:: schreiben vor dem cout etc...? Falls ja mach einfach

    #include <iostream>
    using namespace std;
    cout << "hallo" << endl;

    dann klappts auch
     
  3. 2. Februar 2014
    AW: [C++] Eine kurze FRage zu Namespaces

    Soweit ich weiß, ist es nicht möglich Namen zu überschreiben, daher schätze ich einfach mal, das es zu Fehlermeldungen kommt.
    Was du machen kannst, ist, über using (C++11, Bsp.: "using cout = std::cout") oder typedef zu arbeiten, wenn Du zu faul bist den NS-Prefix zu benutzen.
     
  4. 2. Februar 2014
    AW: [C++] Eine kurze FRage zu Namespaces

    Letztes wäre eine Möglichkeit.
    Ich meine aber Namespaces sind ja dazu da um eventuelle Überschneidungen zu vermeiden.
    Was ist wenn jetzt in 2 namespaces identische funktionen vom namen her liegen.
    Oder kann man nur immer einen namespace mit using einstellen?
     
  5. 2. Februar 2014
    AW: [C++] Eine kurze FRage zu Namespaces

    Du bist ein wenig ungenau. Was genau willst Du jetzt wissen? Die Auswirkungen wenn Du 2 Namensräume verwendest und ein Name identisch ist oder schlicht ein identischer Name in 2 Namensräumen? Da hatte ich Ersteres bereits erwähnt und das Letztere beantwortet sich mit: Es ist alles in Ordnung, solange sich die Namen nicht treffen, was nicht passiert, da sie in unterschiedlichen NS existieren.
     
  6. 2. Februar 2014
    AW: [C++] Eine kurze FRage zu Namespaces

    Wenn zwei namespaces ein Symbol mit dem gleichen Namen exportieren beanstandet der Compiler dein Vorhaben sobald du ein solches Symbol verwendest.
    Ansonsten passiert nichts weiter.

    Kein Problem:
    Code:
    namespace foo {
     int baz = 10;
    }
    
    namespace bar {
     void baz(int& i) { i += 1; }
    }
    
    using namespace foo;
    using namespace bar;
    
    int main() {
     return 0; 
    }
    Problem:
    Code:
    namespace foo {
     int baz = 10;
    }
    
    namespace bar {
     void baz(int& i) { i += 1; }
    }
    
    using namespace foo;
    using namespace bar;
    
    int main() {
     int i = 0;
     baz(i); /* problem: reference to 'baz' is ambiguous */
     return i - 1; 
    }
    Tipp: Vermeide `using namespace xyz;`
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.