Warum kann ich keinen Verweis auf "ofstream" / "ifstream" mit einer Instanz von "fstream" initialisieren?

EINFÜHRUNG
void  read_foo (std::ifstream& out);
void write_foo (std::ofstream& out);

Ich habe diese beiden Funktionen, bei denen einer aus einer Datei lesen und der andere in eine Datei schreiben soll.

Alles funktioniert mit den folgenden Ausschnitten.

std::ifstream ifs ("filename.txt");
read_foo  (ifs);

std::ofstream ofs ("filename.txt");
write_foo (ofs);
DAS PROBLEM

Wenn ich jedoch versuche, einenstd::fstream, damit ich beide Funktionen mit demselben Stream aufrufen kann, er nicht kompiliert und der Compiler viele Fehlermeldungen ausgibt.

Warum kann ich keine binden?fstream zu einemifstream&, oderofstream&?foo.cpp
#include <fstream>

void  read_foo (std::ifstream& out);
void write_foo (std::ofstream& out);

int main () {
  std::fstream fs ("filename.txt");

   read_foo (fs);
  write_foo (fs);
}
Fehler:

<br>foo.cpp: In function ‘int main()’:<br>foo.cpp:9:16: error: invalid initialization of reference of type ‘std::ifstream& {aka std::basic_ifstream<char>&}’ from expression of type ‘std::fstream {aka std::basic_fstream<char>}’ read_foo (fs);<br>^<br>foo.cpp:3:7: note: in passing argument 1 of ‘void read_foo(std::ifstream&)’ void read_foo (std::ifstream& out);

<br>foo.cpp:10:16: error: invalid initialization of reference of type ‘std::ofstream& {aka std::basic_ofstream<char>&}’ from expression of type ‘std::fstream {aka std::basic_fstream<char>}’<br>write_foo (fs);<br>^<br>foo.cpp:4:6: note: in passing argument 1 of ‘void write_foo(std::ofstream&)’ void write_foo (std::ofstream& out);

Antworten auf die Frage(1)

Ihre Antwort auf die Frage