Почему это не работает? Я пытаюсь определить оператор + для int + Date и сделать его возвратом int. Поэтому я определяю оператор + как член для определения Date + int, и я определяю оператор-член, не являющийся членом + (int, Date), но при его использовании в основном он, похоже, не использует эту функцию и генерирует ошибкуКак определить асимметричный + оператор
class Date
{ int D;
int M;
int Y;
public:
Date();
Date(int, int, int);
~Date(void);
int getDay() const;
Date operator+(Date) const;
Date operator+(int) const;
};
Date::Date()
{
D = 15;
Y = 2012;
M = 2;
}
Date::Date(int d, int m, int y)
{
D = d;
Y = y;
M = m;
}
Date::~Date(void)
{
}
int Date::getDay() const
{
return D;
}
Date Date::operator+(Date d) const
{
return Date(d.D+D,d.M+M,d.Y+Y);
}
Date Date::operator+(int d) const
{
return Date(d+D,M,Y);
}
int operator+(int i,Date d) // This is what is wrong apparently.
{
return i + d.getDay();
}
int main()
{
Date d = Date();
int i = 7 + d; // This is what generates the error at compile time.
cout << i;
return 0;
}
, что ошибка ..? – Anycorn
Он компилируется и работает нормально для меня: http://ideone.com/8Jbt8. –
OK Я очень глуп, по-моему, плохой. В моем коде класс Date был в отдельном файле, и я забыл включить оператор + в файл заголовка ... Здесь не было проблемы, потому что он был определен в том же коде ... Спасибо за реакции ребята! –