error: ‘Int Int::operator+(const Int&, const Int&)’ must take either zero or one argument Int Int::operator + (Int const&lhs,Int const&rhs)是什么意思
时间: 2024-01-18 09:35:18 浏览: 136
这个错误提示意味着 `Int` 类的 `operator+` 函数只能拥有零个或一个参数。而在你的代码中,`operator+` 函数却定义了两个 `Int` 类型的参数。
`Int Int::operator + (Int const&lhs,Int const&rhs)` 的正确写法应该是 `Int Int::operator + (Int const& other)`,其中 `other` 代表另外一个 `Int` 类型的对象。这样做可以让你在使用 `+` 运算符时,只需要传递一个 `Int` 类型的参数,而不是两个。
你需要修改 `Int` 类的 `operator+` 函数的定义,以符合这个要求。
相关问题
31 45 D:\76004\Documents\第三次实验.cpp [Error] 'Juzhen Juzhen::operator+(Juzhen&, Juzhen&)' must take either zero or one argument
这个错误提示是因为你在定义 `Juzhen` 类的 `operator+` 函数时,参数列表中有两个参数。根据 C++ 的语法规定,重载运算符 `+` 只能有一个参数或者没有参数,因此需要修改你的代码。
如果你想让 `operator+` 函数接收两个参数,你可以将其定义为普通的成员函数,例如:
```cpp
class Juzhen {
public:
// ...
Juzhen operator+(const Juzhen& other) const {
// 实现矩阵加法操作
}
// ...
};
```
如果你希望保持 `operator+` 函数的语法形式不变,即接收两个参数,那么可以将其定义为全局函数,例如:
```cpp
class Juzhen {
public:
// ...
friend Juzhen operator+(const Juzhen& j1, const Juzhen& j2) {
// 实现矩阵加法操作
}
// ...
};
```
需要注意的是,在全局函数中访问类的私有成员需要使用 `friend` 关键字声明为友元函数。
a.cpp:33:52: error: ‘std::ostream& MyTime::operator<<(std::ostream&, MyTime)’ must take exactly one argument ostream & operator<<(ostream &cout,MyTime t){
这个错误提示说明你定义的 `operator<<` 函数带有两个参数,但实际上应该只有一个参数。在 C++ 中,`operator<<` 函数通常定义为接受一个输出流对象和一个要输出的对象,如下所示:
```
ostream & operator<<(ostream &os, const MyType &obj) {
// 输出 obj 到 os 中
return os;
}
```
第一个参数是输出流对象,我们一般使用 `ostream` 类型的对象,比如 `cout`、`cerr` 等。第二个参数是要输出的对象,我们一般使用 `const` 引用,以避免拷贝对象。
在你的代码中,将 `MyTime` 类型的对象作为第二个参数传递给 `operator<<`,这是不正确的。你需要将其修改为只接受一个参数的形式:
```
ostream & operator<<(ostream &os, const MyTime &t){
// 输出 t 到 os 中
return os;
}
```
这样就可以通过编译了。
阅读全文