Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
#1

Класс Car. Наследование

14.07.2013, 09:11. Просмотров 728. Ответов 8
Метки нет (Все метки)

1) У нас есть class Car
--> св-ва maxspeed, currentspeed. Методы Getmaxs(), Getcurrs() которые соответственно возвр. maxspeed и currentspeed.
Также есть метод Setcurrs()(этот метод нужен для защиты от дурака) + еще есть полностью виртуальный метод virtual void Info()=0;

2) от Car наследуется Lorry (камаз) и у него переопределяется метод void Info();

3) от Car наследуется Bus (автобус) и у класса Bus
--> св-ва number, cap (макс вместимость пассажиров), n (кол-во пассажиров в данный момент).
Методы Info(); Enter() и Exit() --> защита от дурака (типа сколько вышло и сколько зашло), Getcap() (вместимость), Getn() (возвращ. текущее кол-во пассажиров)

Я 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
#include <iostream>
#include <conio.h>
using namespace std;
 
class Car
{
public:
int maxs; int currs;
void Getmaxs(int a)
{
a=350;
maxs=a;
cout<<"Cars max speed is: "<<maxs;}
void Getcurrs(int a)
{
currs=a; cout<<"Cars current speed is: "<<a<<" km/h";}
int Setcurrs()
{
if(currs<maxs && currs>0) return currs;
else cout<<"Error";
if(currs=maxs) return maxs;}
virtual void Info()=0;};
                         
class Lorry:public Car
{
void Info()
{
cout<<"It's a Lorry";}};
                                    
int main()
{
Car BMW;
Lorry KAMAZ;
BMW.Getmaxs();
BMW.Getcurrs(100);
KAMAZ.Info();
                                        
getch();}
Добавлено через 1 минуту
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2013, 09:11
Ответы с готовыми решениями:

Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка),...

Класс Car
Я создал класс Car(при нажатие кнопки ускоряет машину и тд). Помогите дописать...

Разработать класс Car (автомобиль)
Разработать класс Car (автомобиль). Объявить переменные типа этого класса....

Создайте класс car, содержащий информацию об автомобилях
Создайте класс car, содержащий информацию об автомобилях. Закрытыми элементами...

Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цылиндров, мощностью
Надеюсь нигде не ошибся (я про память, вроде всё в стеке создаётся и при выходе...

8
Croessmah
++Ͻ
14499 / 8281 / 1556
Регистрация: 27.09.2012
Сообщений: 20,334
Записей в блоге: 3
Завершенные тесты: 1
14.07.2013, 09:25 #2
Цитата Сообщение от MasterYo Посмотреть сообщение
но и тут выдает ошибку
Где и какую?

Добавлено через 1 минуту
C++
1
2
3
4
5
Car BMW;//Car - абстрактный класс. Нельзя создать объект абстрактного класса
Lorry KAMAZ;
BMW.Getmaxs();
BMW.Getcurrs(100);
KAMAZ.Info();//В классе Lorry функция-член Info имеет доступ private и недоступна снаружи
0
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
14.07.2013, 09:28  [ТС] #3
32 строка - cannot declare variable BMW to be of type Car

Добавлено через 54 секунды
Цитата Сообщение от Croessmah Посмотреть сообщение
Car BMW;//Car - абстрактный класс. Нельзя создать объект абстрактного класса
а понял всё я это догнал
0
Croessmah
++Ͻ
14499 / 8281 / 1556
Регистрация: 27.09.2012
Сообщений: 20,334
Записей в блоге: 3
Завершенные тесты: 1
14.07.2013, 09:29 #4
Цитата Сообщение от MasterYo Посмотреть сообщение
C++
1
void Getcurrs(int a) { currs=a; cout<<"Cars current speed is: "<<a<<" km/h";}
И это что? Это же get-функция, зачем изменять переменную класса. Да и выводить сообщение ни к чему, но это ладно
0
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
14.07.2013, 09:57  [ТС] #5
а можно ли как нибудь вытащить из Car например Getmaxs? или всё если virtual void Info()=0; ничего нельзя сделать?

Добавлено через 2 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
И это что? Это же get-функция, зачем изменять переменную класса. Да и выводить сообщение ни к чему, но это ладно
чо так написать?

C++
1
2
3
void Getcurrs()
{
cout<<"Cars current speed is: "<<currs<<" km/h";}
Добавлено через 25 минут
вот тут всё без ошибок помогите с 3 пунктом пож

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
#include <iostream>
#include <conio.h>
using namespace std;
 
class Car
{
      public:
             int maxs; int currs;
             void Getmaxs()
             {
                 maxs=350;
                 cout<<"Cars max speed is: "<<maxs<<" km/h";}
                 void Getcurrs(int a)
                 {
                     currs=a;
                     cout<<"\nCars current speed is: "<<currs<<" km/h";}
                     int Setcurrs()
                     {
                     
                         if(currs<maxs && currs>0) return currs;
                         else cout<<"Error";
                         if(currs=maxs) return maxs;}
                         virtual void Info()=0;
                         };
                         
                         class Lorry:public Car
                         {public:
                               void Info()
                               {
                                    cout<<"\nIt's a Lorry.";}};
                                    
                                    int main()
                                    {
                                        
                                        Car *pa=new Lorry;
                                        pa->Getmaxs();
                                        pa->Getcurrs(50);
                                        Lorry KAMAZ;
                                        KAMAZ.Info();
                                        getch();}
0
alsav22
5441 / 4836 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
14.07.2013, 09:59 #6
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
#include <iostream>
#include <conio.h>
using namespace std;
 
class Car
{
    int maxs; 
    int currs;
 
  public:
    Car(int m, int c)
    {
        maxs = m;
        currs = c;
    }
      
    int Getmaxs()
    {
        return maxs;
    }
    
    int Getcurrs()
    {
        return currs; 
    }
    
    bool Setcurrs(int c)
    {
        if(c < 0 || c > maxs) 
        {
            cout << "\nError!\n" << endl;
            return false;
        }
        else 
        {
            currs = c;
            return true;
        }
    }
    
    virtual void Info() = 0;
};
                         
class Lorry: public Car
{
    
public:
    Lorry(int m, int c) : Car(m, c)
    {
        
    }
    
    void Info()
    {
        cout << "\nIt's a Lorry\n";
        cout<<"Cars max speed is: "<< Getmaxs() <<" km/h" << endl;
        cout<<"Cars current speed is: "<< Getcurrs() <<" km/h" << endl;
    }
};
                                    
int main()
{
    Lorry KAMAZ(350, 100);
    KAMAZ.Info();
    if(KAMAZ.Setcurrs(200)) KAMAZ.Info();
    
    getch();
}
2
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
14.07.2013, 11:52  [ТС] #7
Помогите пож с 3 пунктом я выполнил 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
#include <iostream>
#include <conio.h>
using namespace std;
 
class Car
{
      public:
             int maxs; int currs;
             void Getmaxs()
             {
                 maxs=350;
                 cout<<"Cars max speed is: "<<maxs<<" km/h";}
                 
                 void Getcurrs(int a)
                 {
                     currs=a;
                     cout<<"\nCars current speed is: "<<currs<<" km/h";}
                     
                     bool Setcurrs()
                     {
                     
                         if(currs>maxs || currs<0)
                         {
                                       cout<<"\n\nWTF? ("<<currs<<") It's ERROR!!!\nCurrent speed can not be negative and can not be greater than the maximum speed. ";
                                       return false;}
                                       else return currs;
                                       }
                         
                         virtual void Info()=0;
                         };
                         
                         class Lorry:public Car
                         {public:
                               void Info()
                               {
                                    cout<<"\nIt's a Lorry.";}};
                                    
                                    int main()
                                    {
                                        
                                        Car *pa=new Lorry;
                                        pa->Getmaxs();
                                        pa->Getcurrs(-50);
                                        pa->Setcurrs();
                                        Lorry KAMAZ;
                                        KAMAZ.Info();
                                        getch();}
Добавлено через 1 час 9 минут
Вот всё я сделал, только тут вышла еще одна проблемка pa=new Bus(60,40); в этой части когда я хотел проверить работает ли защита от дурака, я ввел ну например 51 и там по идеи должно выходить сообщение Error!!! ну она выходит но под ней должна остаться запись 51 а там вот что выдает current people -> 2088810217. В чем моя ошибка?

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
#include <iostream>
#include <conio.h>
using namespace std;
 
class Car
{
      public:
             int maxs; int currs;
             void Getmaxs()
             {
                 maxs=350;
                 cout<<"Cars max speed is: "<<maxs<<" km/h";}
                 
                 void Getcurrs(int a)
                 {
                     currs=a;
                     cout<<"\nCars current speed is: "<<currs<<" km/h";}
                     
                     bool Setcurrs()
                     {
                     
                         if(currs>maxs || currs<0)
                         {
                                       cout<<"\n\nWTF? ("<<currs<<" km/h) It's ERROR!!!\nCurrent speed can not be negative and can not be greater than the maximum speed.";
                                       return false;}
                                       else return currs;
                                       }
                         
                         virtual void Info()=0;
                         };
                         
                         class Lorry:public Car
                         {public:
                               void Info()
                               {
                                    cout<<"\n\nIt's a Lorry.\n";}};
                                    
                                    class Bus:public Car
                                    {
                                          public:
                                                 int number,n,cap;
                                                 Bus(int a, int b, const int c=50)
                                                 {
                                                      cap=c;
                                                      number=a;
                                                      n=b;
                                                      }
                                                 
                                                 int Getcap()
                                                 {return cap;}
                                                 
                                                 int Getn()
                                                 {if(n>cap || n<0)
                                                    cout<<"\n\nERROR!!! ERROR!!! ERROR!!!";
                                                    else return n;
                                                    }
                                                 void Info()
                                                 {
                                                      cout<<"\nNumber of Bus  -> "<<number;
                                                      cout<<"\nMax people     -> "<<Getcap();
                                                      cout<<"\nCurrent people -> "<<Getn();}};
                                                 
                                    
                                    int main()
                                    {
                                        
                                        Car *pa=new Lorry;
                                        pa->Getmaxs();
                                        pa->Getcurrs(-100);
                                        pa->Setcurrs();
                                        pa->Info();
                                        pa=new Bus(60,40);
                                        pa->Info();
                                        
                                        getch();}
0
Kuzia domovenok
2261 / 2030 / 459
Регистрация: 25.03.2012
Сообщений: 7,173
Записей в блоге: 1
14.07.2013, 12:48 #8
Цитата Сообщение от MasterYo Посмотреть сообщение
Lorry (камаз)
камаз это truck, а lorry это Газель.
Цитата Сообщение от MasterYo Посмотреть сообщение
Помогите пож с 3 пунктом я выполнил 2 пункта.
Не выполнил ты ничего. Тебе alsav22 написал, а ты проигнорировал. Геттер должен выглядеть так!
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int Getmaxs()
     {
             return maxs;
     }
int Getcurrs()
     {
             return currs; 
     }
0
MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
14.07.2013, 19:59  [ТС] #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
камаз это truck, а lorry это Газель.
и зачем ты это мне пишешь?

Добавлено через 2 минуты
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
камаз это truck, а lorry это Газель.

Не выполнил ты ничего. Тебе alsav22 написал, а ты проигнорировал. Геттер должен выглядеть так!
мде походу у тебя своего личного мнения нету... зачем цитировать других, я это и без тебя прекрасно знаю, а игнорировать других предоставь мне, это не твоя забота кеп.

Добавлено через 1 минуту
я его проигнорировал потому что мне не нужны 2 одинаковых ответа.
0
14.07.2013, 19:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2013, 19:59

Абстрактный класс, наследование, класс хранится в другом классе
Нужна помощь. Написать программу: 1 класс. Имеется абстрактный класс который...

Наследование: базовый класс Квадрат, производный класс Пирамида
Помогите, пожалуйста!:cry: Добавлено через 6 минут Создать класс КВАДРАТ,...

Наследование. Класс Круг и класс эллипс
Здравствуйте уважаемые программисты. Нужно исправить ошибки в программе. Честно...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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