Интересное задание
Вот такое задание на С++
Создайте класс Date, который будет содержать информацию о дате (день, месяц, год) . С помощью механизма перегрузки операторов, определите операцию разности двух дат (результат в виде количества дней между датами) , а также операцию увеличения даты на определенное количество дней.
ПОМОГИТЕ исправить ошибки в коде самому не получается а помочь не кому :( . Если кто может подскажите как это исправить заранее спасибо !
#include <iostream>
#include<conio.h>
using namespace std;
classDate
{
private:
char* day;// день
int mons; // месяц
int ear; //год
public:
void Day();
void Mons();
void Ear();
void Print();
/////////////
Date::Date()
{
day = 0;
mons = 0;
ear = 0;
}
/////////////////////
Date::Date( char* d,int m,int e)
{
int l = strlen(d) + 1;
day = new char[l];
if (day == 0)
{
exit(1);
}
strcpy_s(day, l, d);
}
////////////////////
void Date::Print()
{
cout << day << "\n";
cout << mons << "\n";
cout << ear << "\n";
}
///////////////////////////
Date::Date()
{
day = 0;
mons = 0;
ear = 0;
}
//////////////////
void Date::Day()
{
char buffer[20];
cout << "Enter day-> ";
cin.getline(buffer, 20);
int l = strlen(buffer) + 1;
day = new char[l];
if (day == 0)
{
exit(1);
}
strcpy_s(day, l, buffer);
}
/////////////////////////
/////////////////////////////////
Date operator+(const Date &N)
{
Date temp;
temp.day = day + N.day;
return temp;
{
Date temp;
temp.mons = mons + N.mons;
return temp;
}
{
Date temp;
temp.ear = ear + N.ear;
return temp;
}
}
/////////////////////////////
Date operator-(const Date &N)
{
Date temp;
temp.day = day - N.day; //(Ошибка №1)Подчеркивает "N" и пишет (выражение должно относится к целочисленному типу или типу перечисления без области видимости )
return temp;
{
Date temp;
temp.mons = mons - N.mons;
return temp;
}
{
Date temp;
temp.mons = mons - N.mons;
return temp;
}
}
/////////////////////////////
Date operator-(const Date &N)
{
Date temp;
temp.day = day - N.day; //(Ошибка №2)Подчеркивает знак "=" и пишет (значение типа "int" нельзя присвоить сущности типа "char*")
return temp;
{
Date temp;
temp.mons = mons - N.mons;
return temp;
}
{
Date temp;
temp.mons = mons - N.mons;
return temp;
}
}
У вас day в classDate имеет тип указателя на char, и что вы от нас хотите?
Измените ему тип на int и всё у вас получится. (И про параметры в конструкторах не забудьте)
этот вопрос уже был, а ты, кстати, улучшил немного.
у тебя день чар как ты его собрался отнимать какой- то бред