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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MalachorNix
0 / 0 / 0
Регистрация: 26.02.2013
Сообщений: 7
#1

Ошибка при компилировании - C++

20.05.2013, 19:34. Просмотров 237. Ответов 1
Метки нет (Все метки)

При компилировании выдается ошибка "невозможно создать экземпляр абстрактного класса". Подскажите, что с ней делать, пожалуйста.

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
#include "stdafx.h"
#include <iostream>
using namespace std;
 
class Figura
{
    virtual void Print() = 0;
    virtual void Read() = 0;
    virtual double Volume (double _a) = 0;
    virtual double Surface (double _a, double _b) = 0;
};
 
class Ellips : public Figura
{
protected:
    double a,b;
public:
    void Print();
    void Read();
    Ellips(double _a=0, double _b=0){a = _a; b = _b;}
    Ellips(const Ellips &ob){a = ob.a; b = ob.b;}
    double Volume (double _a, double _b);
    double Surface(double _a, double _b);
};
 
class Trapecia : public Figura
{
protected:
    double a,b,c,d,h;
public:
    void Print();
    void Read();
    Trapecia(double _a = 0, double _b = 0, double _h = 0, double _c = 0, double _d = 0){a = _a; b = _b; h = _h; c = _c; d = _d;}
    Trapecia(const Trapecia &ob){a = ob.a; b = ob.b; h = ob.h; c = ob.c; d = ob.d;}
    double Volume (double _a, double _b, double _c, double _d);
    double Surface(double _a, double _b, double _h); // В случае ошибки - смотри здесь, и удали из периметра h
};
 
class Square : public Trapecia 
{
protected:
    double a;
public:
    void Print();
    void Read();
    Square(double _a = 0){a = _a;}
    Square(const Square &ob){a = ob.a;}
    double Volume (double _a);
    double Surface(double _a);
};
 
void Ellips :: Read()
{
cout << "Vvedite znachenie bol'shoi poluosi ellipsa: ";
cin >> a;
cout << "\nVVedite znachenie malen'koi poluosi ellipsa: ";
cin >> b;
}
 
double Ellips :: Surface (double a, double b)
{
return 3.14*a*b;
}
 
double Ellips :: Volume (double a, double b)
{
return 4*((3.14*a*b+(a*a-2*a*b+b*b))/(a+b));
}
void Ellips :: Print()
{
    cout << "Ellips \n";
    cout << "P = " << Volume(a,b);
    cout << "\nS = " << Surface(a,b);
}
 
void Trapecia :: Read()
{
cout << "Vvedite znachenie pervogo osnovania: ";
    cin >> a;
cout << "VVedite znachenie vtorogo osnovania: ";
cin >> b;
cout << "Vvedite znachenie visoty: ";
cin >> h;
cout << "Vvedite znachenie pervoi bokovoi storoni: ";
cin >> c;
cout << "Vvedite znachenie vtoroi bokovoi storoni: ";
cin >> d;
}
 
double Trapecia :: Surface (double a, double b, double h)
{
return (h*(a+b))/2;
}
 
double Trapecia :: Volume (double a, double b, double c, double d)
{
return (a+b+c+d);
}
 
void Trapecia :: Print()
{
cout << "Trapecia \n";
cout << "P = " << Volume(a,b,c,d);
cout << "\nS = " << Surface(a,b,h);
}
 
void Square :: Read()
{
cout << "Vvedite znachenie storoni: ";
cin >> a;
}
 
double Square :: Surface (double a)
{
return a*a;
}
 
double Square :: Volume (double a)
{
return 4*a;
}
 
void Square :: Print()
{
cout << "Square \n";
cout << "P = " << Volume(a);
cout << "\nS = " << Surface(a);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int menu;
    while (true)
    {
        cout << "\nViberite figuru:\nEllips - 1\nTrapecia - 2\nKvadrat - 3\nExit - 0: ";
        cin >> menu;
        if (menu == 1)
        {
        Ellips obj1;
        obj1.Read();
        obj1.Print();
        }
        if (menu == 2)
        {
        Trapecia obj2;
        obj2.Read();
        obj2.Print();
        }
        if (menu == 3)
        {
        Square obj3;
        obj3.Read();
        obj3.Print();
        }
        else if (menu == 0)
            break;
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 19:34     Ошибка при компилировании
Посмотрите здесь:

ошибка при компилировании на xcode C++
C++ ошибка при компилировании
C++ Ошибка при компилировании
Ошибка при компилировании C++
ошибка при компилировании, что она означает? C++
ошибки при компилировании C++
Ошибка при компилировании. Язык Си C++
Ошибка при компилировании Declaration terminated incorrectly C++
Ошибки при компилировании C++
C++ При компилировании выдается ошибка 'float fraction::numerator' is private
Ошибка при компилировании C++
Ошибка при компилировании C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
444 / 293 / 20
Регистрация: 22.03.2011
Сообщений: 957
Завершенные тесты: 2
20.05.2013, 19:41     Ошибка при компилировании #2
C++
1
2
   double Volume (double _a, double _b, double _c, double _d);
    double Surface(double _a, double _b, double _h); // В случае ошибки - смотри здесь, и удали из периметра h
Код не Ваш и Вы даже не удосужились прочитать что Вам пишут.

п.с. Почитайте про наследование. Виртуальные функции и чисто виртуальные функции. А также это
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
while (true)
    {
        cout << "\nViberite figuru:\nEllips - 1\nTrapecia - 2\nKvadrat - 3\nExit - 0: ";
        cin >> menu;
        if (menu == 1)
        {
        Ellips obj1;
        obj1.Read();
        obj1.Print();
        }
        if (menu == 2)
        {
        Trapecia obj2;
        obj2.Read();
        obj2.Print();
        }
        if (menu == 3)
        {
        Square obj3;
        obj3.Read();
        obj3.Print();
        }
        else if (menu == 0)
            break;
    }
Вы должны переписать с использованием абстрактного класса. Иначе Ваш труд сводиться в 0.
Yandex
Объявления
20.05.2013, 19:41     Ошибка при компилировании
Ответ Создать тему
Опции темы

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