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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2009, 01:12   #1
Наташенька
Пользователь
 
Аватар для Наташенька
 
Регистрация: 20.12.2008
Сообщений: 26
Радость Перегрузка операторов <<, >>, +=, +. class data

Помогите ответить на вопрос: как сделать так, чтобы у функции "operator+=" было два входящих параметра типа int и Data напр.(Data &p, int n) (если так делаешь компилятор пишет ошибку), надо это для того, чтобы передавать в ф-ю любой объект типа Data Вот!
Код:
#include <iostream>
#include <cstring>
using namespace std;
class Data
{int year;
int month;
int day;
public:
	Data (int d=0, int m=0, int y=0)
	{year=y;
	month=m;
	day=d;}
int get_year() const
{return year;}
int get_month() const
{return month;}
int get_day() const
{return day;}
friend ostream& operator<<(ostream& t, const Data& f);
friend istream& operator>>(istream&, Data&);

int n;
Data operator+=(int n)
{Data d2;
d2.day=this->day+n;
d2.month=this->month;
d2.year=this->year;
int z=d2.day;
int s=d2.month;
int k;
if (s==1, s==01, s==3, s==03, s==5, s==05, s==7, s==07,  s==10, s==12)
{k=31;}
else {k=30;}
if (z>k)
{int t=z/k;
d2.month=this->month+t;
int o=z%k;
d2.day=o;
if(t>12)
{int w = t/12;
d2.year=this->year+w;
int x=t%12;
d2.month=this->month+x;}}
return d2;}

};
void print(Data& V)
{cout<<"("<<V.get_day()<<","<<V.get_month()<<","<<V.get_year()<<")"<<endl;
return;}


ostream& operator<< (ostream& t, const Data& f) {
t<<"("<<f.get_day()<<","<<f.get_month()<<","<<f.get_year()<<")"<<endl;
return t;
}
 

istream& operator>>(istream& h, Data& q) 
 {
int a, b, c;
cout<<"Day: ";
  cin>>a;
  cout<<"Month: ";
  cin>>b;
  cout<<"Year: ";
  cin>>c;
if ((a<1 || a>31) || (b<1 || b>12))
	{ cout<<"Nevernaya data "<<endl;
}
else {q.day=a;
q.month=b;
q.year=c;

 return h;
}
}
Data operator+ (Data d2, int n)
{
	Data j=d2;
return j+=n;}

void main()
{Data d1(1,2,3);
Data d2;
cin>>d2;
int n=100;
cout<<d1<<endl<<d2<<endl;
Data i=d1+n;
Data r=d2+=n;
cout<<i;
cout<<r;}

Последний раз редактировалось Наташенька; 02.05.2009 в 04:47.
Наташенька вне форума Ответить с цитированием
Старый 02.05.2009, 03:58   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Наташенька воспользуйтесь тегом CODE(#), а то ваш код читать не возможно.
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 02.05.2009, 10:04   #3
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию

А зачем ему вообще принимать два параметра? Ну можешь объявить его как friend
<= P.S. если я тебе помог нажми весы слева <=
assasin вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
От .java в .class Iceman Общие вопросы по Java, Java SE, Kotlin 3 23.02.2009 16:36
class queue Freer Общие вопросы C/C++ 6 16.01.2009 00:05
Перегрузка операторов (С++) Перчитель Помощь студентам 1 03.12.2008 18:46
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15
class zzzzz Общие вопросы по Java, Java SE, Kotlin 2 03.04.2008 01:14