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?basic_ostream@DU?basic\_ostream@DU?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


Anmelden zum Antworten