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());
}
我的 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());
}