vererbungsproblem ...



  • bin heute stammkunde im forum :)) hab aber gerad ein proj und brauche etwas oefter hilfe .. hoffe habt ne idee:

    class A{
       public:
         int x;
    };
    
    class B : public A{
      public:
         double y;
    };
    
    class C{
       public:
         C(vector<A> aV, vector<A> bV){a=aV; b=bV;}
         vector<A> a;
         vector<A> b;
    };
    
    int main(int argc, char *argv){
       vector<A> aV;
       vector<B> bV;
       C cObj(aV, bV);
       return 0;
    }
    

    Mein Problem ist ich brauche die member-var b der Klasse C als vector<B> obwohl ich sie als vector<A> deklariere und als vector<B> beim konstruieren verwende. Geht das ueberhaupt in diesem Fall(Eine Art umcasten von vector<A> auf vector<B>)???
    Fragt mich nicht warum ich nicht gleich vector<B> fuer member-var b der Klasse C schreibe (musste leider so gecodet werden, das warum wuerde zu lange dauern 😃 )

    Vielen Dank.



  • Die Elemente im Vector müstest du casten können.



  • Nein. Der eine Vektor speichert A Objekte, der andere B Objekte.
    Entweder du brauchst die Typeninformation überall oder nirgends. Wenn du Zeiger in den vectoren speicherst, dann kannst du sogar Zeiger auf B Objekte in vector<A*>en speichern. So geht das allerdings nicht (Dann bräuchtest du aber auch einen virtuellen Destruktor).



  • Stimmt. Das da keine Pointer auf die Objekte gespeichert werden, hab ich wohl übersehen.


Anmelden zum Antworten