объясните норм языком как реализовать полиморфизм на с++ так чтобы понятно было) указатель на базовый класс имеется base *p[] = new base[4]; p[0] = new kvadrat(); p[1] = new palka(); p[2] = new polukrest(); p[3] = new zigzag1(); p[4] = new zigzag2();Естественно ниче не работает [bCC32 Error] Unit1.cpp(136): E2034 Cannot convert 'base *' to 'base *[]' Full parser context - Unit1.cpp(135): parsing: void base::Spawn() public: void Gameover(void); void GenNext(void); void Spawn(void); }; class kvadrat : public base { public: void Paint(int x, int y, const char z); void Fall(void); void goLeft(void); void goRight(void); void goDown(void); void checkline(int y, int h); int coorx,coory; private: int i; }; class palka : public kvadrat { public: void Paint(int x, int y, const char z, bool zanul); void Fall(void); void goLeft(void); void goRight(void); void goDown(void); void changeState(int x,int y); int coorx,coory; int state; }; class polukrest : public kvadrat { public: void Paint(int x, int y, const char z, bool zanul); void Fall(void); void goLeft(void); void goRight(void); void goDown(void); void changeState(int x,int y); int coorx,coory; int state; }; // * class zigzag1 : public kvadrat { // +* *+ public: //** * void Paint(int x, int y, const char z, bool zanul); void Fall(void); void goLeft(void); void goRight(void); void goDown(void); void changeState(int x,int y); int coorx,coory; int state; }; // * class zigzag2 : public kvadrat { // +* *+ public: // ** * void Paint(int x, int y, const char z, bool zanul); void Fall(void); void goLeft(void); void goRight(void); void goDown(void); void changeState(int x,int y); int coorx,coory; int state; };class base { если все будет работать, я к примеру могу написать p[4].goLeft();и вызовется соответствующая процедура класса zigzag2?