basic_ Klassen Erben



  • The way the standard library iostreams basically works is basic_iostream has a pointer to a basic_streambuf type which is a base type.

    So, Okay. Jetzt möchte ich von basic_ostream<wchar_t, char_traits<wchar_t> > erben.

    Da ergibt sich für mich nur das Problem mit dem Konstruktor.

    Foo():basic_ostream<wchar_t, char_traits<wchar_t> >(NULL){
      }
    

    Der Parameter den der basic_ostream Konstruktor möchte ist basic_streambuf *

    explicit basic_ostream(basic_streambuf<_CharT, _Traits>* __buf);
    

    Aber basic_streambuf ist keine Klasse die Instanziert werden soll, also soll es Wohl eine Abgeleitete sein, das Wiederrum bedeutet ich hab das ganze System noch nicht so wirklich Verstanden, weil mir nicht Klar ist wie ich in meiner Klasse jetzt an diesen Pointer komme. Kann mir wer da nen Tipp geben oder nen Link wo das Erklärt wird?



  • Beispielsweise könntest du ein filebuf oder stringbuf object erzeugen (beide erben von streambuf), dieses durch Aufruf des members open mit einer Datei verbinden und dann dem Konstruktor des ostreams übergeben.
    Alles was du in den stream packst wird dann in die Datei geschreiben.

    std::filebuf fb;
    fb.open("test.txt",std::ios::out);
    
    std::basic_ostream<char,std::char_traits<char> > myofstream(&fb);
    myofstream<<"Hello World";
    

Anmelden zum Antworten