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

Наследование и стек - C++

Восстановить пароль Регистрация
 
Noven'kaya
Сообщений: n/a
10.12.2011, 14:03     Наследование и стек #1
Добрый день!
У меня есть базовый класс Base и 3 производных класса,необходимо теперь создать стек из элементов базового класса..Не могли бы вы мне помочь с этим!
Код
#include <iostream>
using namespace std;
class Base
{
protected:
	char * name;
	char * surname;
	int age;
	public:
Base()
{
	surname=new char [20];
	name=new char [20];
	age=0;

}

};
class Student:public Base
{
private:
	int coorse,group;
	int rate;
public:
	Student()
	{
		coorse=0;
		group=0;
		rate=0;
	}

~Student() 
{
	delete name;
	delete surname;
}
void Print()
{
	cout<<name<<","<<surname<<","<<age<<","<<coorse<<","<<group<<","<<rate<<endl;
}
void Input()
{
	cout<<"Введите имя студента "<<endl;
	cin>>name;
	cout<<"Введите фамилию студента "<<endl;
	cin>>surname;
	cout<<"Введите возраст студента "<<endl;
	cin>>age;
	cout<<"Введите курс студента"<<endl;
	cin>>coorse;
	cout<<"Введите группу студента"<<endl;
	cin>>group;
	cout<<"Введите рейтинг студента"<<endl;
	cin>>rate;
}
};
class Teacher:protected Base
{
	char*post;
	float salary;
public:
Teacher()
{
	post=new char [20];
	salary=0;
}
~Teacher()
{
	delete name;
	delete surname;
	delete post;
}
void Print()
{
	cout<<name<<","<<surname<<","<<age<<","<<post<<","<<salary<<endl;
}
void Input()
{
	cout<<"Введите имя преподавателя: "<<endl;
	cin>>name;
	cout<<"Введите фамилию преподавателя: "<<endl;
	cin>>surname;
	cout<<"Введите возраст преподавателя: "<<endl;
	cin>>age;
	cout<<"Введите должность преподавателя: "<<endl;
	cin>>post;
	cout<<"Введите зарплату преподавателя:"<<endl;
	cin>>salary;
}
};
class Head:private Base
{
	char*chair;
public:
Head()
{
	chair = new char [20];
}
~Head()
{
	delete name;
	delete surname;
	delete chair;
}
void Print()
{
	cout<<name<<","<<surname<<","<<chair<<endl;
	cout<<"возраст"<<age<<endl;
}
void Input()
{
	cout<<"Введите имя заведующего кафедрой "<<endl;
	cin>>name;
	cout<<"Введите фамилию заведующего кафедрой "<<endl;
	cin>>surname;
	cout<<"Введите кафедру заведующего "<<endl;
	cin>>chair;
	cout<<"Введите возраст заведующего кафедрой "<<endl;
	cin>>age;
}
};	

void main()
{
	setlocale(LC_ALL, "Russian");
        Base *a=new Base();
	a->Input();
	a->Print();
	Student *b= new Student();
	b->Input();
	b->Print();	
	Teacher *c= new Teacher();
	c->Input();
	c->Print();
	Head *d= new Head ();
	d->Input();
	d->Print();
	system("pause");
	
}
Это код моей программы без стека..Я начала создавать класс стек
Код
class Stack
{
	Base*head;
public: 
	Stack()
	{
		head=NULL;
	}
 
 void Push(Base*val)
 {...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2011, 14:03     Наследование и стек
Посмотрите здесь:

C++ Наследование
Наследование в С++ C++
C++ Наследование
наследование C++
C++ Наследование
C++ Наследование
C++ наследование
C++ Наследование

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
10.12.2011, 14:35     Наследование и стек #2
у вас ошибки в иерархии.
у Base класса должен быть виртуальный деструктор и name и sername должны удалятся в нем. наследование от base везде должно быть публичным. В класс Base нужно добавить пару методов и реализовать их в наследниках. Они у вас уже заимплеменчены.

C++
1
2
virtual void Print() const = 0;
virtual void Input() = 0;
Не реализовано копирование объектов ни в каком виде. Будут ошибки из-за многократного удаления массивов.
Yandex
Объявления
10.12.2011, 14:35     Наследование и стек
Ответ Создать тему
Опции темы

Текущее время: 03:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru