imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 21.09.2004, 18:31     # 1
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
Question классы в С++

Привет всем!
Кто-нибудь может привести пример такой программы:
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;
};
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  
Старый 21.09.2004, 20:33     # 2
Drakosha
Full Member
 
Аватар для Drakosha
 
Регистрация: 16.10.2002
Адрес: ArchLinux, Internet
Сообщения: 557

Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)Drakosha Реально крут(а)
Цитата:
class Rect {
Point ll_, ur_;

public:
Rect() {}
Rect(const Point& ll, const Point& ur): ll_(ll), ur_(ur) {}

void setLL(const Point& ll) { ll_ = ll; }

}
...
Drakosha вне форума  
Старый 21.09.2004, 21:26     # 3
msustudent
Junior Member
 
Регистрация: 07.06.2004
Сообщения: 103

msustudent Нимб уже пробиваетсяmsustudent Нимб уже пробивается
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();
};
msustudent вне форума  
Старый 22.09.2004, 19:53     # 4
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
Спасибо!
Не совсем понятны 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);
?
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  
Старый 22.09.2004, 20:26     # 5
msustudent
Junior Member
 
Регистрация: 07.06.2004
Сообщения: 103

msustudent Нимб уже пробиваетсяmsustudent Нимб уже пробивается
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);
msustudent вне форума  
Старый 23.09.2004, 00:25     # 6
Melkor
Full Member
 
Аватар для Melkor
 
Регистрация: 25.11.2001
Адрес: Imho.ws
Сообщения: 941

Melkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царствеMelkor Луч света в тёмном царстве
все равно что-то не то...
вот упрощенна прга:
Код:
//____________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();

я студент ) учить надо однако ) а хорошего примера в книге нету (
__________________
Когда умираешь, да еще так долго и трудно, очень хочется хоть немного насолить живым, просто невозможно удержаться от искушения!
М.Фрай
Melkor вне форума  
Старый 23.09.2004, 17:50     # 7
msustudent
Junior Member
 
Регистрация: 07.06.2004
Сообщения: 103

msustudent Нимб уже пробиваетсяmsustudent Нимб уже пробивается
а чем тебе не нравится мой пример?
Все прекрасно работает.
Я это писал полгода назад => сразу так тебе не скажу . Надо перерыть литературу.
msustudent вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 12:08.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.