Форум программистов, компьютерный форум CyberForum.ru

Наследование - C++

Восстановить пароль Регистрация
 
f1-forever
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 6
08.10.2012, 18:54     Наследование #1
Мне нужно переделать класс CLine так чтобы он наследовал два объекта CPoint, а не один как в данном случае. Вот пример кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
 
#define N 30
class CPoint              
{
protected:
    float X,Y;
public:
    CPoint(float aX,float aY);
    ~CPoint(){}
    float GetX();   
    float GetY();
    
};
 
class CLine:public CPoint
{
public:
    CLine(float aX,float aY,float bX,float bY);
    ~CLine(){}
    void IsPointOn(float aX,float aY,float bX,float bY,float c[30][2],int n);
};
 
CPoint::CPoint(float aX,float aY)
{
    X=aX;
    Y=aY;
}
 
float CPoint::GetX()
{
    return X;
}
float CPoint::GetY()
{
    return Y;
}
CLine::CLine(float aX,float aY,float bX,float bY):CPoint(aX,aY)
{
}
void CLine::IsPointOn(float aX, float aY,float bX, float bY,float c[][2],int n)
{
     for(int i=0;i<n;i++)
             if ( 
             (aY-bY)*c[i][0]+(bX-aX)*c[i][1]+(aX*bY-aY*bX)==0 
             && ( aX<c[i][0] && c[i][0]<bX ) || ( aX>c[i][0] && c[i][0]>bX )
             && ( aY<c[i][1] && c[i][1]<bY ) || ( aY>c[i][1] && c[i][1]>bY ) 
             )
                 cout<<"resultat x="<<c[i][0]<<" y="<<c[i][1]<<endl;
             else
                 cout<<"no points"<<endl;
                    
}
int main()
{
    int i,n;
    float x1,y1,x2,y2,c[N][2];
 
    x1=y1=x2=y2=0;
    
    CLine a = CLine(x1,y1,x2,y2);
 
    cout<<"Enter x,y for A"<<endl;
    cin>>x1>>y1;
    cout<<"Enter x,y for B"<<endl;
    cin>>x2>>y2;
    while( x1==x2 && y1==y2 )
    {
        cout<<"error,A=B"<<endl;
    }
    cout<<"vvedite N"<<endl;
    cin>>n;
    if (n<0)
       cout<<"N must be positive\n"<<endl;
    else
        for(i=0;i<n;i++)
        {
                        cout<<"vvedite x,y tochki C"<<endl;
                        cin>>c[i][0]>>c[i][1];
        }
        a.IsPointOn(x1,y1,x2,y2,c,n);
    getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 18:54     Наследование
Посмотрите здесь:

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

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.10.2012, 18:58     Наследование #2
Цитата Сообщение от f1-forever Посмотреть сообщение
Мне нужно переделать класс CLine так чтобы он наследовал два объекта CPoint
никак вы это не сделаете, можно
а) оставить наследование и агрегировать одну точку
б) избавится от наследования и агрегировать две точки
все остальное от лукавого
имхо вариант б) предпочтительнее
Yandex
Объявления
08.10.2012, 18:58     Наследование
Ответ Создать тему
Опции темы

Текущее время: 20:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru