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

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

14.07.2013, 09:11. Просмотров 1465. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2013, 09:11
Ответы с готовыми решениями:

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

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

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

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

8
Don't worry, be happy
16917 / 9794 / 1886
Регистрация: 27.09.2012
Сообщений: 24,291
Записей в блоге: 2
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
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
Don't worry, be happy
16917 / 9794 / 1886
Регистрация: 27.09.2012
Сообщений: 24,291
Записей в блоге: 2
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
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
5477 / 4872 / 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
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
3300 / 2681 / 724
Регистрация: 25.03.2012
Сообщений: 9,683
Записей в блоге: 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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2013, 19:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Класс Владелец и класс Car включающий поле Владелец
Задача такова №1-Создать класс &quot;Владелец&quot; - обязательно не менее 2-х конструкторов, методы. ...

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

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

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


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

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

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