Gentle(wo)man,
beim C++ üben habe ich die Macht der Ableitung erfahren. Jetzt versuche
ich gerade eine Klasse für Dateien zu schreiben. Da dachte ich, ich
leite einfach von std::FILE ab.
1 |
|
2 | #include <cstdio>
|
3 | #include <string>
|
4 |
|
5 | using namespace std;
|
6 |
|
7 | class Datei: public FILE {
|
8 | public:
|
9 | ~Datei() {
|
10 | fclose(this);
|
11 | }
|
12 | Datei(string s) {
|
13 | *this = *static_cast<Datei*>(fopen(s.c_str(), "w"));
|
14 | }
|
15 | };
|
16 |
|
17 | int main() {
|
18 | Datei d("hallo.txt");
|
19 | fprintf(&d, "Hallo Welt!");
|
20 | return 0;
|
21 | }
|
Leider bekomme ich zur Laufzeit einen Fehler (nur mit GNU C++)
1 | Fatal error: glibc detected an invalid stdio handle
|
Mit OpenWatcom 1.9 compiliert wird die Datei zwar ohne Fehlermeldung
erstellt, bleibt aber leer.
Wie gehe ich das richtig an, so dass ich mit einer von std::FILE
abgeleiteten Klasse arbeiten kann, bzw. wie initialisiert man das ganze?