2010-12-19 6 views
3

Ich möchte MyOStream definieren, die von std :: ostream öffentlich erbt. Sagen wir, ich möchte meinen eigenen Ofstream implementieren.inherit std :: ostream

Wie kann das gemacht werden? Ich bin froh für jede Hilfe, codierte Beispiel oder eine relevante Verknüpfung ...

danke!

+1

Was genau möchten Sie erreichen? –

Antwort

0
class YourStream : public std::ostream 
{ 
public: 
    YourStream() : std::ostream(pointer to your favorite buffer) 
    { 
    } 
}; 

Links? Google für sie, z.B. gefunden this. Für die genauen Details verweisen wir auf ein gutes Buch oder auf die standard.

+0

Man sollte wahrscheinlich 'virtuelle' Vererbung verwenden, wenn man von' std :: ostream' erbt. –

3

Ich verstehe nicht genau, was Sie hier erreichen wollen. Benutzercode sollte nicht von den Streams selbst erben, da die Streams eine generalisierte locale-spezifische Konvertierung/"stringizing" -Funktion bereitstellen sollen. Wenn Sie versuchen, ein ostream zu verwenden, das in einen neuen Pufferspeicherort schreiben kann (dh einen gzip-Datenstrom), sollte man in der Regel von basic_streambuf erben, was Ihnen erlaubt, die vorhandenen Iostream-Konvertierungseinrichtungen zu verwenden, aber Ihnen erlauben wird, ihre Daten umzuleiten Input-Output.

Wenn Sie alles über die Funktionsweise von iostream erfahren wollen, ist das beste Buch, das ich über dieses Thema gehört habe, Standard C++ IOStreams and Locales von Angelika Langer und Klaus Kreft. Ich kann mich nicht für das Buch verbürgen, weil ich meine Kopie noch erhalten habe (es ist nächste auf meiner Liste), aber Sie können mehrere Empfehlungen dafür hier auf StackOverflow finden.

Sie möchten wahrscheinlich auch einen Blick auf boost::iostreams werfen, die einige Helfer für alle bietet, die das Verhalten des Iostream-Systems anpassen möchten.