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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2015, 12:17   #1
Євгеній Бєлік
Пользователь
 
Аватар для Євгеній Бєлік
 
Регистрация: 29.10.2011
Сообщений: 52
По умолчанию перегрузка оператора ввода

Ребят, такая ситуация:
у меня есть такие классы:
базовый - Дата(год, месяц, день)
производный - Особа (фамилия, имя, дата(рождения))

базовый - Должность (имя, оклад)
производный - Сотрудник(особа, должность, дата(когда приняли))

ну там еще есть, но для проблемы этого хватит..

В чем проблема, мы имеем в классе "Дата" три переменные - год, месяц, день

Код:
class Data
{
private:
	char* check;
	friend istream& operator>>(istream&, Data&);
	friend ostream& operator<<(ostream&, const Data&);
public:
	Data();
	Data(int y, int m, int d);
	~Data();
protected:
	int year, month, day;
};
и когда я делаю перегрузку ввода для "Сотрудник", то получается я буду вводить дату для класса "Особо" и в конце дату для класса "Сотрудник"...эти даты разные, и после перегрузки вывода получается, что человек родился и начал работу в одно и тоже время.
Я понимаю что можно создать еще три переменные в классе Дата, то это было бы, я думаю, не верно, так как если у нас будет много производных классов, припустим 100, то и переменных будет вообще 300...

вот перегрузки (врядле надо, но мало ли):
Код:
istream& operator>> (istream& stream, Data& obj)
{
	printf("Day: ");
	stream >> obj.day;
	printf("Month: ");
	stream >> obj.month;
	printf("Year: ");
	stream >> obj.year;
	return stream;
}

ostream& operator<< (ostream& stream, const Data& obj)
{
	stream << "( " << obj.day << "." << obj.month << "." << obj.year << ")\n";
	return stream;
}

istream& operator>> (istream& stream, Person& obj)
{
	printf("Name: ");
	obj.name = _strdup("point");
	stream >> obj.name;
	printf("Surname: ");
	obj.surname = _strdup("point");
	stream >> obj.surname;
	printf("Data birth: \n");
	/*printf("Day - ");
	stream >> obj.day;
	printf("Month - ");
	stream >> obj.month;
	printf("Year - ");
	stream >> obj.year;*/
	return stream;
}

ostream& operator<< (ostream& stream, const Person& obj)
{
	stream << "Person: " << obj.name << " " << obj.surname << "; ";
	return stream;
}
Євгеній Бєлік вне форума Ответить с цитированием
Старый 23.11.2015, 23:56   #2
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
и когда я делаю перегрузку ввода для "Сотрудник", то получается я буду вводить дату для класса "Особо" и в конце дату для класса "Сотрудник"...эти даты разные, и после перегрузки вывода получается, что человек родился и начал работу в одно и тоже время.
Я понимаю что можно создать еще три переменные в классе Дата, то это было бы, я думаю, не верно, так как если у нас будет много производных классов, припустим 100, то и переменных будет вообще 300...
У вас ведь отдельные атрибуты отвечают за дату рождения и дату принятия на работу. Как так может получится?
Вот вы в перегрузке ввода для сотрудника организуете ввод для унаследованных атрибутов от вашего класса "Дата" (это будет рождение) и тут же организуете ввод для атрибута Даты (время начала работы, собственно здесь сработает ваша перегрузка для этого типа данных).
По коду, который вы предоставили (и перегрузка ввода в том числе) ничего нельзя сказать. Больше подробностей.
Базиля вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка оператора [] C++ Cannibal Помощь студентам 1 21.05.2013 13:02
Перегрузка оператора ввода rommster Общие вопросы C/C++ 0 06.12.2012 14:16
Перегрузка оператора RuVarez Общие вопросы C/C++ 15 12.07.2012 10:00
Перегрузка оператора ввода Anubys Общие вопросы C/C++ 3 07.11.2011 23:08
Перегрузка оператора + Jane-sad Помощь студентам 0 05.10.2010 13:52