zeigerarray auf abgeleitete klasse mit zeiger auf basis
-
nur eine kleine frage
wenn polymorphie, dann so:
Basis *pPoly=new Abgeleitet;
wunderbar.. nun meine frage:
warum nur:Basis *pPolyArray[2]={ new Abgleitet1(), new Abgeleitet2() };
und nicht:
Basis *pPolyArray[2]={ new Abgleitet1, new Abgeleitet2};
??
der konstruktor übernimmt im beispiel keineparameter
bitte um erhellung
-
Mit 2 Compilern getestet - Die Klammern sind nicht nötig!
-
beim visual studio schon ...
-
ok, mit dem hatte ich es auch getestet. so:
#include <iostream> class Basis { public: Basis() { } }; class Abgeleitet : public Basis { public: Abgeleitet() { } }; class Abgeleitet1 : public Abgeleitet { public: Abgeleitet1() { } }; class Abgeleitet2 : public Abgeleitet { public: Abgeleitet2() { } }; int main() { Basis *pPolyArray[2]={ new Abgeleitet1, new Abgeleitet2 }; return 0; }
oder hab ich da was falsch gemacht?
-
teste einfach mal das
#include <iostream> using namespace std; class Basis{ public: virtual void rede()=0; }; class Abgleitet1 : public Basis{ public: void rede () { cout <<"ab1\n"; } }; class Abgeleitet2 : public Basis{ public: void rede () { cout <<"ab1\n"; } }; int main() { Basis *pBasis[2]= {new Abgleitet1(), new Abgeleitet2()}; pBasis[0]->rede(); }
-
jo, funzt auch ohne die klammern. allerdings hab ich visual c++ 7
BUG?
-
im 6 er nicht
-
BUG?
Jo. Gratuliere Elise. Du hast gerade den zweihundertsiebenunddreißigtausendsten MSVC 6 Bug gefunden
-
yeah ...