Ü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);
    }
    

Anmelden zum Antworten