Frage zu ostream



  • Hallo habe folgen Frage.

    #include <iostream>
    
    using namespace std;
    
    class basic{
    public:
    virtual void drucke(ostream &)=0;
    
    };
    
    class test :public basic{
    public:
    test() {}
    ~test() {}
    
    friend ostream & operator <<(ostream &out, test &a)
    
    {
    
    drucke(ostream);
    
    }
    
    void drucke(ostream &out)
    {
    
    out << " test Drucke" << endl;
    
    }
    
    };
    
    int main()
    
    {
    test a;
    
    cout << a;
    
    }
    

    nehmen wir mal an ich habe eine Basic Klasse und mehrere abgeleitete Klassen , die Basis Klasse soll eine Abstrakte Klasse sein.
    und die methode Drucke(ostream) soll in denn abgeleiteten Klasse private sein und eine Ausgabe soll standfinden .
    es soll aber eine Globale Methode ostream operator<< geben die praktisch die methode drucke aufruft.
    bekomm das irgendwie nicht hin.

    der code ist einfach mal ein test beispiel das ich nicht denn ganzen original code posten muss.

    gruß



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ist ganz simpel:

    struct Basisklasse
    {
    private:
    	virtual std::ostream& drucke( std::ostream& out ) const = 0;
    
    	friend std::ostream& operator<<(  std::ostream& out, const Basisklasse& obj )
    	{
    		return obj.drucke( out );
    	}
    };
    
    struct Test : Basisklasse
    {
    private:
    	std::ostream& drucke( std::ostream& out ) const
    	{
    		return out << "Hello!";
    	}
    };
    


  • Und da der operator<< nur auf die public Methode 'drucke' zugreift, braucht er nicht einmal friend zu sein 😉



  • CStoll schrieb:

    Und da der operator<< nur auf die public Methode 'drucke' zugreift, braucht er nicht einmal friend zu sein 😉

    Die ist bei mir nicht public, ich hab nur die schlechte Angewohnheit bei Code-Snippets struct zu verwenden :xmas2:



  • Danke hat mir sehr weiter geholfen.


Anmelden zum Antworten