000
04.08.2003, 19:02 Uhr
~dummy
Gast
|
Hallo.
Ich habe hier eine eher grundlegende Frage zu Klassen in C++.
Ich schreibe z.Zt ein Programm, das ich mal in C geschrieben habe, in C++ neu. Es greif auf einen Datenträger zu und etapliert dort ein eigenes Dateisys. (Sinn und Zweck eher zweifelhaft :rolleyes
Nun möchte ich den Eigentlichen Zugriff auf das Laufwerk so realisieren: Es gibt eine Klasse für das Dateisystem. Diese greift auf eine Klasse, die den Zugriff auf das Laufwerk handelt, zu.
Mein Problem ist nur, das ich mehrer Laufwerk, die anders angesprochen werden, unterstützen will. Für jeden Laufwerkstyp möchte ich eine eigene Klasse schreiben. Diese Klassen sollen alle ein standatisiertes Interface besitzen (meiner Meinung nach wäre es angebracht eine Quell-Klasse(im Bsp "interface_dummy"), die dann an alle Laufwerks-Zugriffs-Klassen(im Bsp "aa", "bb") vererbt wird, zu schreiben.).
Nun möchte ich irgendwo im Programm (im Bsp in main) die Klasse für das Dateisystem (im Bsp "print") laden und dann - je nach zugeordneten Laufwerk - dieser noch eine Laufwerks-Klasse (im Bsp "aa", "bb") zuordnenen.
C++: |
#include <iostream> using namespace std;
class interface_dummy /* Das ist die Vorgabe für das Interface */ { public: int getnum(); };
class aa : public interface_dummy /* Eine mögliche Klasse zum Zuriff auf das Laufwerk */ { public: int getnum(); };
class bb : public interface_dummy /* Eine andere mögliche Klasse zum Zuriff auf das Laufwerk */ { public: int getnum(); };
class print /* Diese Klasse stellt das Dateisystem da */ { public: interface_dummy my_cls; void print_num(); };
int interface_dummy::getnum () { return 0; }
int aa::getnum() { return 1; }
int bb::getnum() { return 2; }
void print::print_num() { cout << "Die Klasse liefer folgende Zahl: " << my_cls.getnum() << endl; }
int main() { bb obj_bb; print obj_p; obj_p.print_num(); obj_p.my_cls = obj_bb; obj_p.print_num(); return 0; }
|
Ich hätte erwartet, dass die Ausgabe so aussieht: "Die Klasse liefer folgende Zahl: 0" "Die Klasse liefer folgende Zahl: 2"
Ausgegeben wird aber: "Die Klasse liefer folgende Zahl: 0" "Die Klasse liefer folgende Zahl: 0"
Es wird also immer auf die Basis-Klasse zugegriffen.
Was mache ich falsch ? |