Operator <<



  • Hi, ich würd gerne den operator << für meine klasse haben. Aber nicht zur ausgabe, sondern zum schreiben in die klasse.

    die klasse ist in etwa so

    class Packet
    {
    private:
       std::vector<byte> data;
    }
    

    ich will jetzt einfach sowas schreiben können

    Packet *p = new Packet();
    p << "LOGOUT SUCCESSFUL" << endl;
    
    //oder 
    int id = 1;
    std::string str = "muh";
    p << "TEXT id:" << id << " text:" << str << "\n";
    

    Aber egal wie ichs probier es klappt nicht so wirklich, hoffe mir kann jemand helfen 🙂



  • #include <iostream>
    #include <string>
    #include <ostream>
    
    class Test
    {
    public: 
        Test() {}
    
        Test& operator << ( const std::string& msg )
        {
            m_data += msg;
        }
    
        const std::string& getData()  const{ return m_data; }
    
    private:
        std::string m_data;
    };
    
    std::ostream& operator<< ( std::ostream& o,  Test& t )
    {
        o << t.getData();
        return o;
    }
    
    int main(int argc, char** argv)
    {
        Test a;
        int id = 1;
        a << "Hello World";
        std::cout << a << std::endl;
    }
    

    Das funktioniert. Als kleine Orientierung :).
    rya.



  • danke! das in allen beispielen << immer

    std::ostream& operator<< ( std::ostream& o,  Packet& t )
    

    überladen wurde hat mich total verwirrt, bin nichtmal auf die idee gekommen den operator mit einem parameter zu überladen 🙂


Anmelden zum Antworten