C++ 必须接受一个或零个参数错误 (Operator+)

埃里克

我的 Hour.cpp 文件中有以下语句:(课后 Hour)

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
巴拉特·乔希

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

  • 您可以将重载函数修改为
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());
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误C4716:'operator <<':必须返回一个值

C ++ 14 / 1y:“ operator +必须带有一个或两个参数”的标准引用?

为什么operator []只接受一个参数?

以另一个函数为参数的函数“无匹配函数错误” C ++

C ++中的一个奇怪的语法不是operator ==

没有为C#中的一个或多个必需参数错误提供值?

重载 operator+ 以添加 2 个类对象。“C++ 表达式必须是无范围的整数或枚举类型”错误

从另一个函数错误C调用函数

提升python C ++函数调用另一个函数错误

C# 函数错误,因为无法重定向到另一个页面

重写函数调用operator()中的参数C ++

C ++编译错误-不匹配'operator ='

C++ #include 和 operator<< 重载错误

在命令行中声明一个 -n 参数以接受一个整数 - C

错误 C2661:“CObject::operator new”:没有重载函数需要 4 个与 Visual Studio 相关的参数

如何调用一个Objective-C函数,它接受Swift的块字典作为参数?

我可以在C#中为一个参数接受多种类型吗?

C#索引器必须至少具有一个参数

C ++复制构造函数错误地接受了参数

具有默认实现的虚拟 `operator <=>` 是否在 C++20 中创建了另一个虚拟方法?

整数错误(第一个输入参数必须是函数句柄。)

参数错误必须是一个react元素,但是您传递了undefined

未捕获的类型错误:属性描述必须是一个对象:c 期间 Object.defineProperty()

使用类和int参数作为模板的C ++重载operator +

仅将在C ++中定义了operator +的对象作为参数

方法的无重载在C#中出现2个参数错误

创建一个在C#中接受Vector2和Vector3参数的方法

C++ 是否可以重载一个函数,使其参数分别接受文字和引用?

文件操作。一个C程序,它将使用fork()execvp(),wait / waitpid()接受单个命令行参数