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.