C++ Must take either a one or zero argument 错误 (Operator+)

C++ Must take either one or zero argument error (Operator+)

我的 Hour.cpp 文件中有以下语句:(在 class 小时后)

Hour Hour ::operator+(const Hour& h1, const Hour& h2) const{
    return Hour(h1.getHour()+ h2.getHour(), h1.getMinute() + h2.getMinute(), h1.getSecond() + h2.getSecond());
}

然而,在 运行 之后我得到:

error:  must take either zero or one argument

当重载一个运算符作为成员函数时,您只能将另一个 class 作为第二个操作数。第一个操作数是 class 本身的对象。所以,你有两个选择:

  • 可以修改重载函数为
Hour Hour::operator+(const Hour& h) const{
    return Hour(hour_ + h.getHour(), minute_ + h.getMinute(), seconds_ + h.getSecond());
}

where hour_, minute_, seconds_ are member variables of Hour class.
  • 不作为成员函数实现
Hour operator+(const Hour& h1, const Hour& h2) const{
    return Hour(h1.getHour()+ h2.getHour(), h1.getMinute() + h2.getMinute(), h1.getSecond() + h2.getSecond());
}