String an Funktion übergeben - wie?



  • ok passt musste im headerfile auch using namespace std; verwenden hab ich nicht gewusst!

    thx!



  • Aber sonst geht's noch. In Headern NIE using namepsace ... verwenden!!!

    Du musst natürlich std::string schreiben und nicht string!



  • der_Held schrieb:

    Aber sonst geht's noch. In Headern NIE using namepsace ... verwenden!!!

    Du musst natürlich std::string schreiben und nicht string!

    wieso?



  • Jover schrieb:

    Du musst natürlich std::string schreiben und nicht string!

    wieso?[/quote]

    //header.hpp:
    #include<string>
    using namespace std;
    
    void wichtig();
    
    //mystring.hpp:
    namespace my_own_ns
    {
      class string
      {
      ...
      };
    }
    
    //some.cpp:
    #include "header.hpp"
    #include "mystring.hpp"
    using namespace my_own_ns;
    
    void f()
    {
      string s; //PENG
    }
    

    du hebelst damit die Wirkung der Namensraeume aus - schliesslich will man nicht immer std oeffnen, sondern auch mal was anderes - das unterbindest du mit einem using namespace foo in einem header aber.



  • Das weis ich auch. Aber er schrieb 'nie' in Fetten Buchstaben. Könnte ja sein, dass das zu undefinierbaren Verhalten führt. 😉

    Und bei kurzen Programmen verwende ich auch "using namespace std;" und spare mir das std::.

    Bei größeren Projekten ist das natürlich anders.



  • Du darfst using namespace ... sogar in den größten Projekten benutzen, die Du Dir nur entfernt vorstellen kannst... aber nicht im Header! In der Implementierung darfst Du.

    MfG Jester



  • Hi!

    Nebenbei muss man es ja nicht Global benutzen sondern kann es ja auch lokal für einen Namespace, Klasse(?), Methode verwenden. Damit muss man std:: nur noch in den Deklarationen schreiben.

    Code-Hacker



  • Nicht zu vergessen wäre die dritte Möglichkeit:
    using std::string;

    finde ich persönlich am besten, mach ich halt pro File ein paar usings (meistens nicht sehr viele) und hab keine Namenskonflikte, weil ich genau weiss, was ich use.



  • Optimizer schrieb:

    Nicht zu vergessen wäre die dritte Möglichkeit:
    using std::string;

    Das darf man trotzdem nicht in den Header schreiben. In einer *.cpp Datei ist es aber voll OK.



  • Ähm ja, das ist ja klar. 🙂


Anmelden zum Antworten