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

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

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

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

14.07.2013, 09:11. Просмотров 692. Ответов 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. Наследование (C++):

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

Класс Car - C++
Я создал класс Car(при нажатие кнопки ускоряет машину и тд). Помогите дописать свои процедуры пожалуста(можно любые). Буду очень...

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

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

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

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

8
Croessmah
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 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
Эксперт CЭксперт С++
13419 / 7573 / 855
Регистрация: 27.09.2012
Сообщений: 18,646
Записей в блоге: 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
5421 / 4816 / 442
Регистрация: 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
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2013, 19:59
Привет! Вот еще темы с ответами:

Наследование. Класс Круг и класс эллипс - C++
Здравствуйте уважаемые программисты. Нужно исправить ошибки в программе. Честно я в этом ничего не понимаю. Вот код программы: #include...

Наследование и абстрактный класс - C++
Вот сделал список с такими условиями #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; ...

Класс точка(наследование) - C++
Тема:ПРоизводные классы.Наследование Создать класс Точка, которая имеет координаты. Класс Эллипсов, и класс Окружностей. Определить...

Абстрактный класс. Наследование - C++
class polygon{ int height, width, point p; e_color color; public: virtual ~polygon(){} ...


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

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

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