String an Funktion übergeben - wie?
-
string s ="bla";
foo(s);
void foo(string &s){
}
warum funzt das nicht???
thx
-
Weil du irgendwas falsch machst.
-
boa echt??
muss irgendwas mit dem headerfile seinvoid foo(string &s); --> steh auch im foo.h file?? bruch ich im h file auch using namespace std?
-
hast du <string> inkludiert?
-
Downset schrieb:
boa echt??
muss irgendwas mit dem headerfile seinMag sein, hellsehen kann ich jedenfalls nicht. Wie wärs mit ein paar mehr Details? Vielleicht ein vollständiges Beispielprogramm, oder gar (!) die Fehlermeldung, die er dir ausspuckt?
-
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.