Hallo LUG,
der Prüfungsstress hat sich für mich nun erst einmal erledigt und ich kann mich endlich mal wieder ein paar anderen Dingen widmen. Dabei bin ich heute ein ein Problem gestoßen, für das mir bei einem LUG-Treffen schon einmal jemand eine Lösung gezeigt hat (Ulf oder Tobias??). Allerdings war kurz darauf die Platte von dem Notebook gecrashed und ich konnte mich nicht mehr daran erinnern. Das Problem ist in folgendem, stark vereinfachten Quelltext:
<--------------------- TEST.CPP --------------------->
#include <stdio.h> #include <stdlib.h>
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 ]; // ^^^^ ????
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 Ganze hat folgenden Hintergrund: ich möchte ein objekt- orientiertes Toolkit mit NCurses schreiben, das Widgets (Eingabefelder, Listen, Buttons) für die Textconsole zur Verfügung stellt. Dazu möchte ich eine Containerklasse bauen, die mit o.g. Vorgehensweise verschiedene Widgets (jeweils eigenständige Klassen) verwalten kann und dabei quasi als Keyserver fugiert.
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.
Ich würde mich freuen, wenn jemand von euch die Zeit findet und mir dabei helfen kann.
Schöne Pfingsten,
Matthias
-- ------------------------------------ Matthias Petermann --( )- wget http://linux.unixcity.de/matthias/key -O - | gpg --import gpg: 1E3D E373 0CCA AD8A D203 B210 8260 ED77 95D7 030D ------