Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2012, 15:16   #1
Etete
Пользователь
 
Регистрация: 09.01.2011
Сообщений: 10
По умолчанию Наследование в C++

Создать класс двигатель, имеющий мощность. Определить конструкторы и метод доступа Создать класс автомашины, содержащий класс двигатель. Дополнительно есть марка (указатель на строку) и стоимость. Определить конструкторы и деструктор. Определить public- производный класс грузовик, имеющий грузоподъемность и тип кузова. Определить конструкторы и функцию печати.

Помогите найти ошибку в программе.

Код:
#include <iostream>
#include <conio.h>

using namespace std;


class cEngine
{
private:
  int power;
 public:
  cEngine(int);
 };

cEngine::cEngine(int Power)
{
 power = Power;
}

class cAutomobile
{
 private:
  cEngine* engine;
  char* mark;
  int price;
 public:
  cAutomobile(cEngine*, char*, int);
  void show_automobile();
 };

cAutomobile::cAutomobile(cEngine* Engine, char* Mark, int Price)
{
 cEngine* engine = Engine;
 mark = Mark;
 price = Price;
}
void cAutomobile::show_automobile()
{
    cout << "Мощность двигателя: " << engine << "лс." << endl;
    cout << "Марка автомобиля: " << mark << endl;
    cout << "Цена" << price << endl;
}

class cTruck : public cAutomobile {
public:
    cTruck(cEngine*, char*, int, float, char*);
    void show_truck();

private:
    float capacity;
    char* body;
};

cTruck::cTruck(cEngine* Engine, char* Mark, int Price, float Capacity, char* Body) : cAutomobile(Engine, Mark, Price)
{
capacity = Capacity;
body = Body;
}
void cTruck::show_truck()
{
    show_automobile();
    cout << "Грузоподъёмность; " << capacity << "т." << endl;
    cout << "Тип кузова: " << body << endl;
}

int main()
{
    cAutomobile a(200, "Ауди", 400000);
    cTruck b(400, "Фиат", 1300000, 20, "Автосцепка");
    void show_automobile();
    void show_truck();
    getch();
    return 0;
}
Etete вне форума Ответить с цитированием
Старый 30.05.2012, 17:26   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ну как минимум вот
Код:
void show_automobile();
    void show_truck();
Код:
a.show_automobile();
    b.show_truck();
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 30.05.2012, 19:10   #3
Etete
Пользователь
 
Регистрация: 09.01.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Greblin Посмотреть сообщение
Ну как минимум вот
Код:
void show_automobile();
    void show_truck();
Код:
a.show_automobile();
    b.show_truck();
Да, это я уже заметил =) Но всё равно выводит ошибку:
invalid conversion from 'int' to 'cEngine*'
initializing argument 1 of 'cAutomobile::cAutomobile(cEngine*, char*, int)'
invalid conversion from 'int' to 'cEngine*'
initializing argument 1 of 'cTruck::cTruck(cEngine*, char*, int, float, char*)'
Etete вне форума Ответить с цитированием
Старый 30.05.2012, 20:06   #4
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Компилятор как бы сообщает Вам, что не может привести переменную типа int к переменной типа cEngine*. Смотрим в код и видим
Код:
cAutomobile::cAutomobile(cEngine* Engine, char* Mark, int Price)
это конструктор
Код:
cAutomobile a(200, "Ауди", 400000);
а это вызов. 200 - это действительно число, но никак не двигатель
Вы видно хотели, чтобы у Вас сразу конструктор cEngine вызвался с параметром 200. Не выйдет Вызывайте его ручками, например в конструкторе cAutomobile. То же самое и со вторым классом
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 31.05.2012, 00:05   #5
Etete
Пользователь
 
Регистрация: 09.01.2011
Сообщений: 10
По умолчанию

Что-то не получается, черт возьми.
Etete вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование Настюнечка Помощь студентам 0 29.11.2011 18:40
наследование настюх Помощь студентам 8 27.11.2011 13:54
Наследование Yulia13666 Общие вопросы по Java, Java SE, Kotlin 8 09.05.2010 11:39
Наследование lolopolosko Помощь студентам 1 21.11.2009 17:17
Наследование beregok Общие вопросы C/C++ 1 04.07.2009 22:39