Наследование в С++

компьютеры программирование программы С++ делфи

Знатоки С++, помогите, пожалуйста, разобраться с лабораторной. Нужно создать базовый класс "линия": координаты начала и конца, конструктор с параметрами, метод вычисления длины линии, и производный класс "отрезок": конструктор с параметрами, метод вычисления угла между отрезком и осью ОУ, метод вывода данных. Вот мои попытки, но мне выдаёт ошибку "Couldn't find a match for 'intercept::intercept()'":
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>

class Line
{
double _x1, _y1, _x2, _y2;
public: Line (double x1, double y1, double x2, double y2):
_x1(x1), _y1(y1), _x2(x2), _y2(y2) {}

void setx1 (double n) {_x1=n;}
double getx1() {return _x1;}
void sety1 (double m) {_y1=m;}
double gety1() {return _y1;}
void setx2(double l) {_x2=l;}
double getx2() {return _x2;}
void sety2(double k) {_y2=k;}
double gety2() {return _y2;}

double Length (double x1, double y1, double x2, double y2)
{
double a, b, L;
a=pow ((x2-x1),2);
b=pow ((y2-y1), 1/2);
return L=a+b;
}
};

class intercept: public Line
{
double a1, b1, a2, b2;
public: intercept (double x, double y, double xx, double yy): Line (a1, b1, a2, b2){}
double angle(double a1, double a2, double b1, double b2)
{
double A;
A=1/(atan((a2-a1)/(b2-b1)));
return A;
}
void prin ()
{
printf("koordinatu nachala otrezka:%f", a1, b1);
printf("koordinatu konza otrezka:%f", a2, b2);
}
};

void main ()
{
clrscr();

intercept myint;
myint.setx1(13);
myint.sety1(9);
myint.setx2(4);
myint.sety2(1);
myint.prin();
printf ("dlina otrezka=%f", myint.Length (myint.getx1(), myint.gety1(), myint.getx2(), myint.gety2()));
printf ("ygol=%f", myint.angle(myint.getx1(), myint.getx2(), myint.gety1(), myint.gety2()));
getch();
}

Примечание:
Спасибо большое за ответы!! Изменила пока что так:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
class Line
{
double _x1, _y1, _x2, _y2;
public: Line (double x1, double y1, double x2, double y2):
_x1(x1), _y1(y1), _x2(x2), _y2(y2)
{}
void setx1 (double n) {_x1=n;}
double getx1() {return _x1;}
void sety1 (double m) {_y1=m;}
double gety1() {return _y1;}
void setx2(double l) {_x2=l;}
double getx2() {return _x2;}
void sety2(double k) {_y2=k;}
double gety2() {return _y2;}
double Length (double x1, double y1, double x2, double y2)
{
double a, b, L;
a=pow ((x2-x1),2);
b=pow ((y2-y1), 1/2);
return L=a+b;
}
};

class intercept: public Line
{
double a1, b1, a2, b2;
public: intercept (double, double, double, double): Line (a1, a2, b1, b2)
{
}
double angle(double, double, double, double)
{
double A;
A=1/(atan((a2-a1)/(b2-b1)));
return A;
}
void prin ()
{
printf("koordinatu nachala otrezka: x1=%f, \n", getx1());
printf("y1=%f, \n", gety1());
printf("koordinatu konza otrezka: x2=%f, \n", getx2());
printf("y2=%f, \n", gety2());
}
};

void main ()
{
clrscr();

intercept myint(0,0,0,0);
myint.setx1(13);
myint.sety1(9);
myint.setx2(4);
myint.sety2(1);
myint.prin();
printf ("dlina otrezka=%f", myint.Length (myint.getx1(), myint.gety1(), myint.getx2(), myint.gety2()));
printf ("ygol=%f", myint.angle(myint.getx1(), myint.getx2(), myint.gety1(), myint.gety2()));
getch();
}

Так работает, а поля дублируютя Вы имеете ввиду a1, b1, a2, b2? А как без них? Или те значения, что были в конструкторе (x, xx, y,yy) - их я таки убрала...
П.С. А с конструктором без параметров я пробовала, но не получается, мне всё равно ошибку выдаёт, я так и думала, что в этом проблема...

Примечание:
Павел, большое спасибо за подробные ответы! Сейчас буду переделывать )) ООП я действительно не знаю, только начинаю его изучать, и многое ещё не понимаю... Спасибо!
Ответы:
...
void main ()
{
clrscr();
Вот эта строчка - intercept myint; - требует наличия открытого (public) конструктора по умолчанию, которого нема. Добавьте в класс конструктор по умолчанию или измените проблемную строку как srs2k сказал.
return L=a+b;
так не нужно писать.
пиши просто return a+b;
Да, у вас все стало еще хуже (теперь у вас еще и метод angle не работает - проверьте-ка его результаты). Но я посмотрел историю ваших вопросов и обнаружил, что программировать вы скорее умеете чем нет (по крайней мере, матрицу транспонируете без посторонней помощи), а вот ООП не знаете... Так что напишу вам про ваши ошибки подробнее


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.