Super- und Subtypenmechanismen
-
Hallo Forum,
anhand einer Basisklasse möchte ich ein Interface auf eine Klasse definieren. Diese "Basisklasse" (AbstractByteReader) wird lediglich definiert (h-File)), aber nicht implementiert.
class AbstractByteReader...
davon Abgeleitete Klassen stellen Services über die Schnittstellen von Basisklasse bereicht
class FileByteReader: public AbstractByteReader...
Jetzt Konstruiere ich im Projekt ein Element dieser Klasse. Durch diesen Mechnismus möchte ich die Kapselung und eine einheitliche Schnittstelle erreichen.
AbstractByteReader * ding = new FileByteReader();
Der Borland Compiler 5.5 bringt mir diese Fehler:
Error: Unresolved external 'AbstractByteReader::AbstractByteReader()' eferenced from M:\EIGENE DATEIEN\_KONVERTIERUNG\KONVERTER_CODE\FILEBYTEREADER.OBJ
Error: Unresolved external 'AbstractByteReader::readByte()' referenced from M:\EIGENE DATEIEN\_KONVERTIERUNG\KONVERTER_CODE\TEST.OBJ
Error: Unresolved external 'AbstractByteReader::isValid()' referenced from M:\EIGENE DATEIEN\_KONVERTIERUNG\KONVERTER_CODE\TEST.OBJ
Error: Unresolved external 'AbstractByteReader::closeStream()' referenced from M:\EIGENE DATEIEN\_KONVERTIERUNG\KONVERTER_CODE\TEST.OBJIn wieweit sollte ich meinen Code umstellen, bzw. wie bekomme ich den Compiler dazu die spezialisierten Methoden des FileByteReader's zu verwenden statt die Methoden des AbstractByteReader's?
Viele Grüße - Swen
-
Solange Du die Methoden nicht als pure virtual markierst, musst Du eine Implementierung bereitstellen. Z.B. der Konstruktor der Basisklasse wird immer von dem der Subklasse aufgerufen, also brauchst Du hier auch immer eine Implementierung. Der Rest kann pure virtual sein.
virtual void readByte() = 0;
-
Ahhh, Super!
Verrücktes C - Jetzt funktioniert es!
schönes Wochenende - Swen
-
Swen schrieb:
Verrücktes C
C++
Jetzt funktioniert es!
Tja, kaum macht man's richtig...
