On Sunday 03 June 2001 00:59, Matthias Petermann wrote: Du must von einer gemeinsamen Klasse ableiten und die Methode virtual deklarieren (d.h. welche von beiden benutzt wird entscheidet sich erst zur Laufzeit).
<--------------------- TEST.CPP --------------------->
#include <stdio.h> #include <stdlib.h>
class c_fahrzeug { public: virtual int start()=0; };
class bus { public: int start( ); };
class bahn { public: int start( ); };
int bus::start( ) { printf("Bus wurde gestartet...\n"); }
int bahn::start( ) { printf("Bahn wurde gestartet...\n"); }
main() { char *fahrzeug[ 3 ]; // ^^^^ ????
c_fahrzeug *fahrzeug[3];
fahrzeug[ 1 ] = new bus( ); fahrzeug[ 2 ] = new bahn( );
fahrzeug[ 1 ] -> start( ); fahrzeug[ 2 ] -> start( );
}
Ich möchte also einen einheitlichen Typ haben, in dem ich sowohl Instanzen des Objektes "Bus" wie auch jenen des Objektes "Bahn" ablegen kann. Ich hab hier nur einmal rezeptmäßig "char" hingeschrieben, was aber nicht funktioniert.
Das wäre dann die gemeinsame Basisklasse c_fahrzeug.
Hinweis: das "=0" bedeutet es ist eine abstrakte Methode, was übersetzt soviel heißt wie "ich bin nur die Basisklasse, die Funktionen werden erst in den abgeleiteten Klassen definiert". Von solchen abstrakten Klassen darf man zwar Pointer und Referenzen aber keine Instanzen erzeugen.
[cut]
Ich bin schon fleißig am Lesen vom GoTo C++ Buch, dass mir Heiko empfohlen hat, aber zu meinem wahrscheinlich nicht ganz sauberen Ansatz hab ich da nichts gefunden, zumindest nicht beim Stöbern im Stichwortverzeichnis.
Die Stichworte lauten "Vererbung", "virtuelle Methoden/Klassen", "Ableitung", "abstrakte Methoden".
Konrad