Помогите написать конструктор
class Line: public Point
{
int a2;
int b2;
public:
Line (Point p1, Point p2):Point(p1 a2(p2.a b2(p2.b){}
};
{
int a2;
int b2;
public:
Line (Point p1, Point p2):Point(p1 a2(p2.a b2(p2.b){}
};
Наследовать линию от точки - это нарушение правил объектного проектирования, т.к. линия не является расширением точки.
В данном случае, лучше сделать композицию, чем наследование
В данном случае, лучше сделать композицию, чем наследование
class Line
{
public:
Point p1;
Point p2;
Line (Point p1, Point p2)
{
this.p1 = p1;
this.p2 = p2;
}
Line (int x1, int y1, int x2, int y2)
{
this.p1.x = x1;
this.p1.y = y1;
this.p2.x = x2;
this.p2.y = y2;
}
}
Ты зачем девушку плохому учишь?
1. просили конструктор сделать для класса, а не класс отнаследовать
2. Линия - это такая точка, которая имеет длину и ориентацию
3. На ней не написано что она девушка
2. Линия - это такая точка, которая имеет длину и ориентацию
3. На ней не написано что она девушка

Line (Point p1, Point p2)
{
this.p1 = p1;
this.p2 = p2;
}
у тебя для Point'ов вызывается default-конструктор, а затем - оператор присваивания, что не есть good в общем случае
Глупости говоришь.
Ты где это видел компилятор, который так себя ведет?
Ты где это видел компилятор, который так себя ведет?
gcc 3.3.3
Не получается ответить на предыдущий пост.
p.a и p.b объявлены как private, их нельзя читать из класса Line.
p.a и p.b объявлены как private, их нельзя читать из класса Line.
Оставить комментарий
swimmerira
Хотела написать два примитивных объекта - точку и линию.
С точкой проблем не возникло, а вот написать грамотно конструктор для линии, чтобы инициализировать ее по двум точкам никак не могу. Как сделать так, чтобы конструктор производного класса воспринял объекты базового при своей инициализации если это вообще возможно.
Заранее спасибо!
Ниже листинг с обоими классами.
class Point
{
int a;
int b;
public:
Point(int x, int y){ a=x; b=y;};
};
class Line: public Point
{
int a2;
int b2;
public:
Line (Point p1(x,y Point p2(x2, y2; // как написать конструктор с параметрами p1
//и p2 ?
};