Article View: de.comp.lang.c++
Article #1830Probleme beim Vererben von fstream
From: Bernhard Ruch
Date: Thu, 14 Mar 1996 18:23
Date: Thu, 14 Mar 1996 18:23
62 lines
2342 bytes
2342 bytes
Ich habe folgendes Problem:
Ich moechte eine neue Klasse ObjectStream definieren, die von der
Klasse fstream vererbt wird. Zusaetzlich zu den gewoehnlichen
fstream-Operationen soll das Lesen und Schreiben von Objekten
moeglich sein.
Ich definiere also eine Klasse Object, eine Klasse ObjectStream,
die von fstream abgeleitet ist, und einen Operator << in ObjectStream,
der als Parameter eine Referenz auf ein Object erhaelt.
Die Klasse Objekt enthaelt eine Methode SaveData, die als Parameter
einen ObjectStream erhaelt. In dieser Methode versuche ich, eine Zahl
in den ObjektStream zu schreiben.
Dies fuehrt zum folgenden Code:
#include <fstream.h>
class Object;
class ObjectStream : public fstream {
public:
ObjectStream &operator << (const Object &pObject);
}; /* ObjectStream */
class Object {
public:
void SaveData (ObjectStream &ObjStream) {
ObjStream << 1;
}; /* SaveData */
}; /* Object */
Wenn ich nun versuche, diesen Code zu compilieren, meldet der Compiler,
dass er keinen Operator << fuer (ObjectStream, int) kenne, obwohl ja
ObjectStream von fstream abgeleitet ist und diesen Operator kennen
muesste:
g++ -c Test.cc
Test.cc: In method `void Object::SaveData(class ObjectStream &)':
Test.cc:20: no match for `operator <<(class ObjectStream, int)'
Wenn ich nun hingegen aus der Klasse ObjectStream den Operator << fuer
die Klasse Object herausnehme,
(i.e. die Linie: "ObjectStream &operator << (const Object &pObject);" )
dann compiliert das Programm ohne Fehler.
Heisst das, dass ich, falls ich den Operator << fuer die Klasse Object
ueberladen will, ich ihn auch fuer alle anderen Typen (int, char, long,
float, etc) neu definieren muss?
Fuer Hinweise zur Loesung dieses Problems waere ich dankbar.
Bernhard
Technical Details
Message-ID:
<31486437.41C6@studi.epfl.ch>Path:
arc1-ca.pugleaf.net!dinews.epfl.ch!usenetShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!dinews.epfl.ch!usenet From: Bernhard Ruch <Bernhard.Ruch@studi.epfl.ch> Newsgroups: de.comp.lang.c++ Subject: Probleme beim Vererben von fstream Date: Thu, 14 Mar 1996 19:23:51 +0100 Organization: Ecole Polytechnique Federale de Lausanne Message-ID: <31486437.41C6@studi.epfl.ch> NNTP-Posting-Host: didec5.epfl.ch Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 2.0 (X11; I; OSF1 V3.2 alpha)