Vererbung in C++ ??

  • Themenstarter Themenstarter AlanBraxe
  • Beginndatum Beginndatum
A

AlanBraxe

Guest
Also folgendes Problem:
Ich habe eine Basisklasse A. Von dieser Basisklasse A erbt nun eine Klasse B public. Von B erbt noch eine Klasse C. Auch public.

Zwecks Speicherverwaltung habe ich mir nun ein Feld mit Zeigern vom Typ A angelegt. Ich habe nun das Problem, dass ich auf Memberfkt. der Klasse B und C zugreifen will. (mit den einzelnen Zeigern)
Ich bekomme jedesmal die Fehlermeldung, dass die besagte Memberfkt. kein Element der Klasse A ist.
Wie kann ich nun auf die Memberfkt. von B und C zugreifen?

zur Zeit sieht es noch so aus:

A *Pointer[10];

Pointer = new C(...Variablen...);

wenn ich nun mit Dpointer->'Memberfkt. von C' darauf zugreifen möchte kommt der o.g. Fehler.

Kann mir jemand helfen?

TIA

Alan
 
N'abend.

Bei sowas behilft man sich des sogenanntem Casting, wandel beim Zugriff den Pointer einfach auf den gewünschten (und unterstützten :D ) Objekttyp um.

Code:
((C*)Dpointer[i])->'Memberfkt. von C'

cu,
- Bit'chen
 
@ Mr.Bit

Tausend Dank, das war die Lösung.
Weißt du vielleicht auch noch wie man eine komplette Zeichenkette mit Leerzeichen einlesen kann, wo man am Ende bloß ENTER drücken muss. Wenn ich es mit cin.getline versuche und als delimiter \n (ein Backspace weniger, es wurde irgendwie automatisch eingefügt) benutze dann hat er das ENTER noch von einer vorherigen Eingabe drin und springt somit gleich weiter und fragt mich erst gar nicht.

Alan
 
Hi Alan,

mit dem getline steh ich auf Kriegsfuß, hab bisher unter Win nur Probs damit gehabt.

Alternativ kannst Du aber auch einfach gets( char* s ) nehmen, arbeitet auch mit stdin und wie man es erwarten würde:
Code:
char s[256];

cout << \"Enter a sentence (use <Enter> to end):\";
gets( s );
cout << \"You entered: \\"\" << s << \"\\"\";

CU,
- Bit'chen
 
Danke hat wieder funktioniert. Im Gegensatz zum cin.getline.

Alan
 
Zurück
Oben