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.