operator<<, ist mir ein raetsel
-
Hallo,
Leider funktioniert die Suche nicht und in der FAQ hab ich auch nichts gefunden, habe folgendes Problem: ich versuche verzweifelt meinen operator<< zu ueberladen aber bekomme jedes mal folgenden fehler
.net
test.obj : error LNK2019: Nicht aufgelöstes externes Symbol '"class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl my::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class my::String const &)" (??6my@@YAAAV?char_traits@D@std@@@std@@AAV12@ABVString@0@@Z)', verwiesen in Funktion '_main'mingw
[Linker error] undefined reference to `my::operator<<(std::ostream&, my::String const&)'(also einen nicht aufgeloesten externen Verweis)
hier mein code:
// header #include <iostream> using namespace std; namespace ParserUtilities { class String { public: // friend ostream& operator<< (ostream&, const String&); friend istream& operator>> (istream&, String&); }; // }; //cpp #include "utilities.h" using namespace ParserUtilities; // ostream& operator<< (ostream& os, const String& s) { os << s.c_str(); return os; }bitte helft mir bin echt schon am verzweifeln hab schon alles versucht, außerhalb der Klasse alle moeglichen Namensraeume usw..

mfg leo
-
Mit "using namespace ..." wird dieser namespace in den globalen Namespace eingebunden. Aber du wirst deswegen noch nicht in diesen versetzt.
Heißt für dich:
ostream& ParserUtilities::operator<< (ostream& os, const String& s) { os << s.c_str(); return os; } // bzw. namespace ParserUtilities { ostream& operator<< (ostream& os, const String& s) { os << s.c_str(); return os; } }MfG SideWinder