我正在尝试为 int + Date
定义 +
运算符并使其返回
一个 int
.所以我定义了operator+
作为成员来定义Date + int
,我定义了一个非成员函数operator+(int, Date)
,但是在 main 中使用它时,它似乎没有使用该功能并产生错误。
class Date
{
int D, M, 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;
}
最佳答案
您可以将其定义为类外的友好函数。
请考虑示例链接:
http://www.learncpp.com/cpp-tutorial/92-overloading-the-arithmetic-operators/
关于c++ - 如何定义非对称 + 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507715/