Überladen vom Stream Operator "<<"



  • Hallo,

    ich bin gerade dabei einen Stream Operator zu überladen:
    Mein Problem ist, dass ich ein fixkomma.ccp und eine fixkomma.hpp Datei habe und nicht weiß wie das in den beiden auszusehen hat. Im Internet habe ich paar Sachen gefunden, aber komme damit nicht weiter.

    meine fixkomma.hpp:

    #ifndef FIXKOMMA_HPP
    #define	FIXKOMMA_HPP
    
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <cmath>
    
    using namespace std;
    
    class fixkomma{
    private:
        long vk, nk;
        int anzVk, anzNk;
    
    public:
        //Konstruktoren
        fixkomma();
        fixkomma(char *st_zahl);
        //Copy.Konstruktor
        fixkomma(const fixkomma &f);
    
        //Funktionen
        long *decode(char *st_zahl);
        bool isLegal(char *st_zahl);
        char *getNumber(long *longzahl);
        char *getChar(long a);
        int getLange(long a);
    
        //Ausgaben
        long getvk();
        long getnk();
        long getanzvk();
        long getanznk();
    
        friend ostream &operator <<(ostream &out_data,fixkomma &fix);
    };
    
    #endif	/* FIXKOMMA_HPP */
    

    ist das in der hpp Datei richtig? Wie muss das äquivalent in der cpp Datei aussehen? Muss die da überhaupt rein?

    Gruß und Vielen Dank
    POC



  • ist das in der hpp Datei richtig?

    Eine Kleinigkeit: Mach aus Zeile 37

    friend ostream &operator <<(ostream &out_data, fixkomma const& fix);
    

    Wie muss das äquivalent in der cpp Datei aussehen?

    So:

    ostream &operator <<(ostream &out_data, fixkomma const& fix)
    {
        out_data << /* Ausgeben ... */
        return out_data;
    }
    

    Muss die da überhaupt rein?

    Nein, "müssen" nicht. Sollte.

    P.S.:

    using namespace std;

    In Headern ist eine ganz blöde Idee.


Anmelden zum Antworten