000
20.01.2006, 15:46 Uhr
~Lunar
Gast
|
Hallo,
ich hab da mal ein kleines Problem mit abstrakten Klassen in C++....
Also, ich will eine abstrakte Oberklasse schreiben, ein gemeinsames Interface für die abgeleiteten Klassen bieten UND von der keine Instanz erzeugt werden kann (sonst wär sie ja nicht abstrakt...;-)...)....
..nun kriegt man es ja rel. leicht hin, in dem man die Methoden mit virtual und =0 deklariert. Das Problem ist nur, dass mir der Compiler dann auch nicht mehr erlaubt, diese Methoden in der abstrakten Basisklasse zu implementieren!!!
==> ich will also eine abstrakte Klasse, die eine Schnittstelle für die Kindklassen bietet UND aber die Methoden auch selbst implementiert....in Java geht sowas...geht das auch mit c++??
Hintergrund: ********* Für diejenigen, die sich fragen wozu ich das überhaupt will. Nun, man stelle sich für eine Application das Exceptionhandling vor:
==> da gibt es dann eine abstrakte Oberklasse MyAppException. Diese bietet eine Reihe von Funktionen, die CExeption nicht bietet..z.b. getStackTrace() und getNestedException()...
==>von dieser Klasse leitet man dann beliebige weitere Exceptionklassen ab. Da sie alle von MyAppException abstammen, bieten sie alle das selbe Interface
==>aber ich will doch die Methoden getStackTrace() und getNestedException() nur einmal implementieren, nämlich in MyAppException
************** Das ganze läuft prima. Das einzigste, was mich stört ist, dass ich in der Lage bin eine Instanz von MyAppException zu erzeugen...ich finde, das ist schlechtes Design....
Hat da jemand ne Idee, oder unterstützt C++ das gar nicht....??? Bis dann- |