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.