Überschreiben innerer Klasse...geht das überhaupt?
-
Hallo Leute,
ich hab gerade 'n Knoten ... abgesehen davon, dass ich sowieso nicht gerade sehr fit bin in C++:
class basis { public: dada () { } class inner { gugus () { ;} } } class ableit : public basis { public: class inner () { gugus () { ;} } }
Was ich eigentlich möchte, ist folgendes: Alle Methoden von basis übernehmen, aber einige Methoden der inneren Klasse inner überschreiben.
Ist sowas überhauot möglich?
Danke
-
ok... hab's selber gefunden. Der Trick ist
class inner : public base::inner
beim Überschreiben der inneren Klasse. Uff...
Kleines Demo-Programm:
#include <stdio.h> class base { public: class inner { public: inner() { hello(); } virtual void hello() { printf("hello\n"); } }; virtual void nix() { printf("nix\n"); } }; class deriv : public base { public: void nix() { printf("nix2\n"); } class inner : public base::inner { void hello() { printf("hello2\n"); } }; }; int main (void) { base::inner* inst = new base::inner(); base::inner* inst2 = new deriv::inner(); deriv::inner* inst3 = new deriv::inner(); base* lower = new deriv(); deriv* lower2 = new deriv(); inst2->hello(); lower->nix(); lower2->nix(); delete inst; delete inst2; delete inst3; delete lower; delete lower2; return( 0); }