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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2014, 02:52   #1
Kioko
Новичок
Джуниор
 
Регистрация: 24.12.2014
Сообщений: 1
Лампочка Множественное наследование ( доступ к базовым классам через puublic ,private)

Программа запускается, но сразу же выдает ошибку. Помогите пожалуйста решить эту проблему.
И если что-то написано неправильно, помогите ,пожалуйста, исправить ошибки.
Возможна ли реализация здесь абстрактных классов?
Код:
#include <stdio.h>
#include <string.h>
#include <Windows.h>
#include <iostream>
#include <locale.h>

using namespace std;


 class Type_TS

{
public:
	Type_TS(char *, int);
	virtual void show_TS(void);
private:
	char name[40];
	int pas;
};

Type_TS::Type_TS(char *name,int pas)

{
	strcpy(Type_TS::name, name);
	Type_TS::pas = pas;
}

void Type_TS::show_TS(void)

{
	cout << "Наименование транспортного средства: " << name << endl;
	cout << "Количество пассажиров: " << pas << endl;

}

class board_comp

{
public:
	board_comp(char*,char*,int, float, int);
	virtual void show_board_comp(void);
protected:
	char os[70];
	char name_comp[80];
	
	int RAM;
	float diag_mon;
	int temp;
	char* get_os() {return os ;};
	char* get_name_comp(){return name_comp ;};
	
	int get_RAM(){return RAM ;};
	float get_diag_mon(){return diag_mon ;};
	int get_temp(){return temp ;}; 

	
};

board_comp::board_comp(char *name_comp,char *os,int RAM,  float  diag_mon, int temp)

{
	strcpy(board_comp::name_comp,name_comp);
	board_comp::RAM = RAM;
	board_comp::diag_mon=diag_mon;
	strcpy(board_comp::os,os);
	board_comp::temp=temp;

}

void board_comp::show_board_comp(void)

{
	cout << "Название бортового компьютера: " << name_comp << endl;
	cout<<"Диагональ экрана"<<diag_mon<<"Дюйма"<<endl;
	cout << "Оперативное запоминающее устройство: " << RAM << " МВайт" << endl;
	cout << "Рабочая минимальная температура: " << temp << " градусов Цельсия" << endl;
	cout << "ОЗУ: " << RAM << " МВайт" << endl;
}

class concept_version : public Type_TS, private board_comp

{
public:
	concept_version(int,int,int,float,char *, int, char*,char*,int, float, int);
	virtual void show_concept_version (void);
protected:
	int day;
	int month;
	int year;
	float cost;
};

concept_version::concept_version(int day,int month,int year,float cost,char *name,int pas,char *name_comp,char *os,int RAM,  float  diag_mon, int temp):Type_TS(name,pas),board_comp(name_comp, os,  RAM, diag_mon, temp)
{

	concept_version::day = day;
	concept_version::month = month;
	concept_version::year = year;
	concept_version::cost = cost;
}

void concept_version::show_concept_version(void)

{
	cout << "Дата релиза: " << day <<"."<<month<<"."<<year<< endl;
	cout << "Предварительная цена: " << cost << "$" << endl;
	show_board_comp();
	show_TS();
}

class budget_TS: public concept_version

{
public:
	budget_TS(char* , float ,int ,int ,int ,float ,char *,int ,char *,char *,int ,  float , int );
	 void show___TS(void);
protected:
	char* type_dv;
	float vol_dv;
}; 

budget_TS::budget_TS(char* type_dv, float vol_dv,int day,int month,int year,float cost,char *name,int pas,char *name_comp,char *os,int RAM,  float  diag_mon, int temp):concept_version(day, month, year, cost,name,pas,name_comp, os, RAM,    diag_mon,  temp)
{
	strcpy(budget_TS::type_dv, type_dv);
	budget_TS::vol_dv=vol_dv;/**/
}

void budget_TS::show___TS(void)
{
	cout << "Тип двигателя: " << type_dv << endl;
		cout << "Объем двигателя: " <<  vol_dv<< endl;
show_concept_version();
}


class collect_TS: public concept_version

{
public:
	collect_TS(char* , int,int ,int ,int ,int ,float ,char *,int ,char *,char *,int ,  float , int );
	virtual void show__TS(void);
protected:
	char* spec;
	int acsesss;
	int exempl;
}; 

collect_TS::collect_TS(char* spec, int acsesss,int exempl,int day,int month,int year,float cost,char *name,int pas,char *name_comp,char *os,int RAM,  float  diag_mon, int temp):concept_version(day, month, year, cost,name,pas,name_comp, os, RAM,    diag_mon,  temp)
{
	strcpy(collect_TS::spec, spec);
	collect_TS::acsesss=acsesss;
	collect_TS::exempl=exempl;
}

void collect_TS::show__TS(void)
{
	cout << "Количество выпущенных экземпляров:: " << exempl << endl;
		cout << "Количество  дополнительных аксессуаров: " <<  acsesss<< endl;
		cout << "Особенности: " <<  spec<< endl;
show_concept_version();
}


void main(void)

{
	setlocale(LC_ALL, "russian");
	collect_TS col("BMV-NIONO6", 20, 200, 15, 07, 2015, 9560000, "name", 4, "PI-602", "Wind", 47,8,-15);
	col.show__TS();
	budget_TS bud("Lok-95",  60, 15, 07, 2015, 9560000, "name", 4, "PI-602", "Wind", 47,8,-15);
	bud.show___TS();
	system("pause");
}
Kioko вне форума Ответить с цитированием
Старый 24.12.2014, 06:39   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Ну а так то ты не понимаешь что "транспортное средство" - это какая-то абстрактная штука и класс стоит сделать абстрактным тоже?
rrrFer вне форума Ответить с цитированием
Старый 26.12.2014, 19:48   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Код:
class collect_TS: public concept_version

{
public:
	collect_TS(char* , int,int ,int ,int ,int ,float ,char *,int ,char *,char *,int ,  float , int );
	virtual void show__TS(void);
protected:
	char* spec;
	int acsesss;
	int exempl;
}; 

collect_TS::collect_TS(char* spec, int acsesss,int exempl,int day,int month,int year,float cost,char *name,int pas,char *name_comp,char *os,int RAM,  float  diag_mon, int temp):concept_version(day, month, year, cost,name,pas,name_comp, os, RAM,    diag_mon,  temp)
{
	strcpy(collect_TS::spec, spec);
	collect_TS::acsesss=acsesss;
	collect_TS::exempl=exempl;
}
У вас тут ошибка. Вы копируете строку "strcpy(collect_TS::spec, spec);", но при этом вы не выделяете место
для хранения строки по указателю collect_TS::spec
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
множественное наследование... zla9_kolu4ka Общие вопросы C/C++ 5 01.04.2014 01:21
Множественное наследование Алексей201 Visual C++ 4 16.12.2013 04:35
Множественное наследование midiss Visual C++ 2 31.05.2013 12:52
[с++] Множественное наследование huichos Общие вопросы C/C++ 3 16.12.2011 18:25