| imho.ws |
![]() |
|
|
|
# 1 |
|
Full Member
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941
![]() ![]() ![]() ![]() ![]() ![]() |
Привет всем!
Кто-нибудь может привести пример такой программы: 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; };
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения! М.Фрай |
|
|
|
|
# 3 |
|
Junior Member
Регистрация: 07.06.2004
Сообщения: 103
![]() ![]() |
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(); }; |
|
|
|
|
# 4 |
|
Full Member
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941
![]() ![]() ![]() ![]() ![]() ![]() |
Спасибо!
Не совсем понятны 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); ?
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения! М.Фрай |
|
|
|
|
# 5 |
|
Junior Member
Регистрация: 07.06.2004
Сообщения: 103
![]() ![]() |
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); |
|
|
|
|
# 6 |
|
Full Member
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941
![]() ![]() ![]() ![]() ![]() ![]() |
все равно что-то не то...
вот упрощенна прга: Код:
//____________Point работает без проблем________
class Point {
public:
Point(){set(0,0);};
Point(int x,int y);
void CoordRead(); //считывает с клавы
void printxy(); //печатает содержимое на экране
void ChangeCoord(); //меняет с помощью пред и след
void set(int x,int y); //ставит координаты в x,y
private:
int x,y;
};
class Rectang:Point{
public:
Rectang();
Rectang(Point p1,Point p2); //каждый Rectang состоит из 2х Point
void ChangeRect(); //меняет координаты на считанные с клавы
void PrintRectang(); //печатает
void setRectang(); //считывает с клавы
void setRectangx(Point p1z, Point p2z); //ставит на введенные
~Rectang(); //деструктор
Point p1,p2; //декларация
private:
};
Rectang(Point p1,Point p2); //каждый Rectang состоит из 2х Point так же пишет ошибку на Код:
void Rectang::setRectang()
{
p1.CoordRead();
p2.CoordRead();
}
Потом из main хочу делать так Rectang tang1, tang2; tang1.p1.CoordRead(); tang2.p1.CoordRead(); я студент ) учить надо однако ) а хорошего примера в книге нету (
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения! М.Фрай |
|
|