![]() |
классы в С++
Привет всем!
Кто-нибудь может привести пример такой программы: 2 класса, 1-й описывает координаты точки, запись/изменение/вывод на экран 2-й допустим прямоугольник, двумя точками (напр верхний левый и правый нижний углы ) как можно во втором классе создавать 2 первых? вроде конструктор нужен... class Point { public: Point(){}; Point(int x=0, int y=0); void CoordGet(); void printxy(); void regCoord(); private: int x,y; }; |
Цитата:
|
class Point
{ public : Point(){set(0,0,0);}; Point(double xx,double yy, int zz); void set(double ,double ,int ); double x,y; int z; }; //................................................. class Surf { public: void virtual drawLine() = 0; void virtual drawCircle(Point& p , double radius) = 0; void virtual drawPoly() = 0; void virtual drawSquare(Point p,double width) = 0; void virtual drawTriangle(Point p1,Point p2,Point p3) = 0; }; //................................................. class Surface: public Surf { public: void drawLine(); void drawCircle(Point& p , double radius); void drawPoly(); void drawSquare(Point p,double width); void drawTriangle(Point p1,Point p2,Point p3); }; //................................................. class Shape { public: Shape(){;}; virtual ~Shape(){;}; virtual void draw(Surf&) = 0; virtual void move(int,Point) = 0; virtual Point& getP(int) = 0; virtual int getS() = 0; }; //................................................. class Polygon: public Shape { абстрактный класс }; //................................................. class Square: public Shape { const int s; Point mass[2]; public: Square(); Square(Point& tl,Point& br); ~Square(); void move(int,Point); void draw(Surf&); Point& getP(int); int getS(); }; //................................................. class Triangle: public Polygon { const int s; Point mass[3]; public: Triangle(); Triangle(Point p1,Point p2,Point p3); ~Triangle(); void draw(Surf&); void move(int,Point); Point& getP(int); int getS(); }; //................................................. class Circle: public Polygon { const int s; Point mass; double radius; public: Circle() ; Circle(double,double,double, int); ~Circle(); void draw(Surf&); void move(int,Point); Point& getP(int); double getR(); int getS(); }; |
Спасибо!
Не совсем понятны 2 вещи: 1. когда нужно запускать ~Square(); и где. В main после программы или он сам запускается. Потом, я не использую 'new' значит он должен быть пустым? 2. Triangle(Point p1,Point p2,Point p3); нужно ли их создавать? Например: private: Point p1,p2,p3; и как к ним пройти. Что-то не получается. Допустим если я хочу изменить координаты p2 в 2-х разных Triangle. Triangle a,b; a.p2.set(2,1); b.p2.set(2,1); ? |
1 ~Square - деструктор , запускается по умолчанию при выходе из области объявления или при вызове оператора delete.
2 "Triangle(Point p1,Point p2,Point p3);" конечно нужно! допустим ты хочешь при объявлении сразу присвоить им какое-то значение! точки p1-p3 не являются public, обращайся так: a.getP(0).set(2,0,1); a.getP(1).set(3,-1,1); b.getP(3).set(2,0,1); |
все равно что-то не то...
вот упрощенна прга: Код:
//____________Point работает без проблем________Rectang(Point p1,Point p2); //каждый Rectang состоит из 2х Point так же пишет ошибку на Код:
void Rectang::setRectang()Потом из main хочу делать так Rectang tang1, tang2; tang1.p1.CoordRead(); tang2.p1.CoordRead(); я студент :)) учить надо однако :)) а хорошего примера в книге нету :(( |
а чем тебе не нравится мой пример?
Все прекрасно работает. Я это писал полгода назад => сразу так тебе не скажу . Надо перерыть литературу. |
| Часовой пояс GMT +4, время: 12:07. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.