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

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

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

Абстрактный класс.производные функции - C++

22.05.2013, 15:43. Просмотров 487. Ответов 3
Метки нет (Все метки)

Вот условие задачи
Кликните здесь для просмотра всего текста
Создать абстрактный класс транспортное средство Trans с методами позволяющим вывести на экран информацию о транспортном средстве, а также определить грузоподъемность транспортного средства.

Создать производные классы: Легковая_машина (марка, номер, скорость, грузоподъемность), Мотоцикл (марка, номер, скорость, грузоподъемность, наличие коляски, при этом если коляска отсутствует, то грузоподъемность равна 0), Грузовик (марка, номер, скорость, грузоподъемность, наличие прицепа, при этом если есть прицеп, то грузоподъемность увеличивается в два раза) со своими методами вывода информации на экран, и определения грузоподъемности.

Создать базу (массив) из n транспортных средств, вывести полную информацию из базы на экран, а также организовать поиск транспортных средств, удовлетворяющих требованиям грузоподъемности.


А вот список ошибок:
Кликните здесь для просмотра всего текста

[bcc32 Error] File3.cpp(31): E2238 Multiple declaration for '~Trans::Trans()'
Full parser context
File3.cpp(14): class Trans
[bcc32 Error] File3.cpp(30): E2344 Earlier declaration of '~Trans::Trans()'
Full parser context
File3.cpp(14): class Trans
[bcc32 Warning] File3.cpp(29): W8070 Function should return a value
Full parser context
File3.cpp(14): class Trans
File3.cpp(32): decision to instantiate: int Trans:rint()
--- Resetting parser context for instantiation...
File3.cpp(28): parsing: int Trans:rint()
[bcc32 Warning] File3.cpp(49): W8022 'Car::wgt()' hides virtual function 'Trans::wgt() const'
Full parser context
File3.cpp(34): class Car
[bcc32 Warning] File3.cpp(49): W8022 'Car:rint() const' hides virtual function 'Trans:rint()'
Full parser context
File3.cpp(34): class Car
[bcc32 Error] File3.cpp(38): E2188 Expression syntax
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(43): E2275 { expected
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(70): E2188 Expression syntax
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(86): E2310 Only member functions may be 'const' or 'volatile'
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(86): E2141 Declaration syntax error
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Error] File3.cpp(91): E2139 Declaration missing ;
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: Car::Car(char *,char *,float,float)
--- Resetting parser context for instantiation...
File3.cpp(38): parsing: Car::Car(char *,char *,float,float)
[bcc32 Warning] File3.cpp(43): W8070 Function should return a value
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: int Car:rintTransName() const
--- Resetting parser context for instantiation...
File3.cpp(41): parsing: int Car:rintTransName() const
[bcc32 Warning] File3.cpp(47): W8070 Function should return a value
Full parser context
File3.cpp(34): class Car
File3.cpp(49): decision to instantiate: int Car:rint() const
--- Resetting parser context for instantiation...
File3.cpp(44): parsing: int Car:rint() const
[bcc32 Warning] File3.cpp(51): W8098 Multi-character character constant
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(51): E2129 Character constant too long (or empty)
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(51): E2034 Cannot convert 'unsigned int' to 'const char *'
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(51): E2342 Type mismatch in parameter '__command' (wanted 'const char *', got 'unsigned int')
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(56): E2303 Type name expected
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(56): E2034 Cannot convert 'int *' to 'Trans *'
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(56): E2257 , expected
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(58): E2141 Declaration syntax error
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(58): E2139 Declaration missing ;
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Warning] File3.cpp(58): W8004 'a' is assigned a value that is never used
Full parser context
File3.cpp(50): parsing: int main()
[bcc32 Error] File3.cpp(58): E2190 Unexpected }
[bcc32 Error] File3.cpp(60): E2040 Declaration terminated incorrectly
[bcc32 Error] File3.cpp(60): E2141 Declaration syntax error
[bcc32 Error] File3.cpp(60): E2238 Multiple declaration for 'i'
[bcc32 Error] File3.cpp(60): E2344 Earlier declaration of 'i'
[bcc32 Error] File3.cpp(64): E2190 Unexpected }
Failed
Elapsed time: 00:00:00.1

Большое спасибо за помощь
C++ (Qt)
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
#include <math.h>
#include <iostream.h>
 
 
class Trans {
    float v;
    char  *m,*n;
 
    public:
        Trans(char *mm,char *nn, float vv){
            m=new char[strlen(mm)+1];
            strcpy(m,mm);
            n=new char[strlen(nn)+1];
            strcpy(n,nn);
            v=vv;
        }
        virtual float wgt() const { return 0; } // грузоподъемность
        virtual int printTransName() const = 0;
        virtual int print(){
        cout <<"марка" << m << " ,номер" << n << " ,скорость" << v << " "; }
        ~Trans(){delete[]m;};
        ~Trans(){delete[]n;};
};
 
class Car: public Trans{
    float w;
    public:
    float wgt() { return 0; }
        Car(char *mm,char *nn, float vv,float ww):Trans(char *mm,char *nn, float vv)  {
          w=ww;
        }
    int printTransName() const {
            cout << "легковая машина: ";
        }
    int print() const {
            Trans::print();
            cout <<"грузоподъемность="<< w << " "<<endl;
        };
 
};
 
 
class motocycle: public Trans{
    float w;
    public:
        motocycle(char *mm,char *nn, float vv,float ww):Trans(char *mm,char *nn, float vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Есть коляска для мотоцикла? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             ww+=100;
            }
        else (temp=='n'){};
        }
        int printTransName() const {
                cout << "Мотоцикл: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
 
class Gruzovik: public Trans{
    float w;
    public:
        Gruzovik(char *mm,char *nn, float vv,float ww):Trans(char *mm,char *nn, float vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Грузовик с прицепом? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             ww*=2
            }
        else (temp=='n'){};
        }
        int printTransName() const {
                cout << "Грузовик: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
int main(){
    system('chcp 1251');
 
    int a,b,c;
         Trans *a[3]={
         new Car("BMW","а111мр",210,40),
         new motocycle("BMW","123d",300,13),
         new Gruzovik("MAN","е777кх",150,3000) 
                     };
         int v;
        for(int i=0;i<3;i++){
             a[i]->print();   }
             
 
 
        getchar();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 15:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактный класс.производные функции (C++):

Абстрактный класс и его производные - C++
Здравствуйте. Мне необходимо построить иерархию классов - базовый абстрактный и два производных. Оба производных класса имеют несколько...

Создать абстрактный базовый класс и производные - C++
Всем привет. Прошу подсказать, что-то у меня не выходит. Задание: Создайте абстрактный базовый класс &quot;Работник&quot;, один из методов которого,...

Создать абстрактный базовый класс Figure и производные классы Rectangle, Circle - C++
Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. Создать производные классы: Rectangle...

Создать класс - данные - абстрактный базовый класс. Создать производные классы - C++
Всем привет! У меня вот такая проблема.... Создать класс - данные - абстрактный базовый класс. Создать производные классы - данные типа...

Объясните как объявить абстрактный класс, и при этом не тащить виртуальные методы в производные классы - C++
Суть вопроса - есть у меня класс, который я решаю сделать абстрактным. Как я понимаю что бы сделать класс абстрактным необходимо просто...

Создать абстрактный класс с виртуальной функцией вычисления нормы и модуля; определить производные классы с собственными функциями - C++
Прошу вашей интеллектуальной помощи) Условие задачи: 16. Создать абстрактный класс Norm с виртуальной функцией вычисления нормы и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sl_k
12 / 12 / 0
Регистрация: 15.04.2010
Сообщений: 61
22.05.2013, 16:18 #2
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
#include <math.h>
#include <iostream>
#include <cstring> 
using namespace std; 
class Trans {
    float v;
    char  *m,*n;
 
    public:
        Trans(char *mm,char *nn, float vv){
            m=new char[strlen(mm)+1];
            strcpy(m,mm);
            n=new char[strlen(nn)+1];
            strcpy(n,nn);
            v=vv;
        }
        virtual float wgt() const { return 0; } // грузоподъемность
        virtual int printTransName() const = 0;
        virtual int print() const{
        cout <<"марка" << m << " ,номер" << n << " ,скорость" << v << " "; }
        ~Trans(){delete[]m; delete[]n;};
 
};
 
class Car: public Trans{
    float w;
    public:
    float wgt() { return 0; };
    Car(char *mm,char *nn, float vv,float ww):Trans(mm,nn,vv)  {
          w=ww;
        }
    int printTransName() const {
            cout << "легковая машина: ";
        }
    int print() const {
            Trans::print();
            cout <<"грузоподъемность="<< w << " "<<endl;
        };
 
};
 
 
class motocycle: public Trans{
    float w;
    public:
        motocycle(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Есть коляска для мотоцикла? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w+=100;
            }
        }
        int printTransName() const {
                cout << "Мотоцикл: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
 
class Gruzovik: public Trans{
    float w;
    public:
        Gruzovik(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Грузовик с прицепом? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w*=2;
            }
 
        }
        int printTransName() const {
                cout << "Грузовик: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
int main(){
 
    int a,b,c;
         Trans *ar[3]={
         new Car("BMW","а111мр",210,40),
         new motocycle("BMW","123d",300,13),
         new Gruzovik("MAN","е777кх",150,3000) 
                     };
         int v;
        for(int i=0;i<3;i++){
             ar[i]->print();   }
 
}
1
weightless
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 103
22.05.2013, 20:13  [ТС] #3
Спасибо! А как включить функцию wgt()?
C++
1
2
3
4
for(int i=0;i<3;i++){
                ar[i]->wgt();
             ar[i]->print();
      }
Таким способом 0 реакции...
0
sl_k
12 / 12 / 0
Регистрация: 15.04.2010
Сообщений: 61
22.05.2013, 20:29 #4
weightless, а какая реакция должна быть. Функция же ничего не делает.

Добавлено через 7 минут
А, нашел. для грузовика. сейчас посмотрим

Добавлено через 5 минут
Прототипы функций должны быть одинаковыми для базового класса и наследников. У вас в базовом стоит float, а в дочерних int


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
#include <math.h>
#include <iostream>
#include <cstring> 
using namespace std; 
class Trans {
    float v;
    char  *m,*n;
 
    public:
        Trans(char *mm,char *nn, float vv){
            m=new char[strlen(mm)+1];
            strcpy(m,mm);
            n=new char[strlen(nn)+1];
            strcpy(n,nn);
            v=vv;
        }
        virtual int wgt() { return 0; } // грузоподъемность
        virtual int printTransName() const = 0;
        virtual int print() const{
        cout <<"марка" << m << " ,номер" << n << " ,скорость" << v << " "; }
        ~Trans(){delete[]m; delete[]n;};
 
};
 
class Car: public Trans{
    float w;
    public:
    int wgt() { return 0; };
    Car(char *mm,char *nn, float vv,float ww):Trans(mm,nn,vv)  {
          w=ww;
        }
    int printTransName() const {
            cout << "легковая машина: ";
        }
    int print() const {
            Trans::print();
            cout <<"грузоподъемность="<< w << " "<<endl;
        };
 
};
 
 
class motocycle: public Trans{
    float w;
    public:
        motocycle(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Есть коляска для мотоцикла? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w+=100;
            }
        return 0; 
        }
        int printTransName() const {
                cout << "Мотоцикл: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
 
class Gruzovik: public Trans{
    float w;
    public:
        Gruzovik(char *mm,char *nn, float vv,float ww):Trans(mm,nn, vv)  {
          w=ww;
        }
        int wgt(){
        cout<<"Грузовик с прицепом? да-y,нет-n"<<endl;
        char temp;
        cin >> temp;
        if (temp=='y') {
             w*=2;
            }
    return 0;
        }
        int printTransName() const {
                cout << "Грузовик: ";
            };
        int print() const {
                Trans::print();
                cout <<"грузоподъемность="<< w << "кг "<<endl;
            }
 
};
int main(){
 
    int a,b,c;
         Trans *ar[3]={
         new Car("BMW","а111мр",210,40),
         new motocycle("BMW","123d",300,13),
         new Gruzovik("MAN","е777кх",150,3000) 
                     };
         int v;
        for(int i=0;i<3;i++){
        ar[i]->wgt();             
        ar[i]->print();   }
 
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 20:29
Привет! Вот еще темы с ответами:

Создать абстрактный базовый класс Figure с виртуальной функцией Периметр. Создать производные классы Rectangle - C++
Создать абстрактный базовый класс Figure с виртуальной функцией -периметр.Создать производные классы Rectangle, Circle,Triangle,Rhomb в...

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы - C++
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы все фигуры, содержащие...

Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема - C++
Создать абстрактный базовый класс с виртуальной функцией - Объем. Создать производные классы: Пирамида, Шар со своими функциями объема:...

Абстрактный класс, как аргумент функции - C++
добрый день. есть базовый класс Tag внем строковое поле Name есть производные от него класы SmplTag со строковым полем Value и класс...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.05.2013, 20:29
Ответ Создать тему
Опции темы

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