我是学习者。我正在进行运算符重载。我正在尝试编写重载[]的代码并打印成员数组中的元素。但当我超载<<要打印成员数组,我收到错误, ostream&没有类型。我在这做错了什么?如果我有一个有两个成员数组的类,我该怎么办?以下是我的代码:
#include <iostream>
#include <cassert>
class Digit
{
private:
int digit1[3]{0};
public:
int& operator[](const int index);
ostream& operator<<(ostream& out);
};
int& Digit::operator[](const int index)
{
return digit1[index];
}
ostream& Digit::operator<<(ostream& out)
{
int loop;
out << "{";
for (loop = 0; loop < 10; loop++)
{
out << digit1[loop] << " ";
}
out << "}";
return o;
}
int main()
{
using namespace std;
Digit n;
n[0] = 4;
n[1] = 3;
n[2] = 4;
n << cout;
return 0;
}
答案 0 :(得分:2)
你已经放
了int main()
{
using namespace std;
//....
在您声明<<
运营商的位置无法看到。一种解决方案是将签名更改为包括姓名:
在课堂上:
std::ostream& operator<<(std::ostream& out)
然后
std::ostream& Digit::operator<<(std::ostream& out)
当你在那里时,我想知道它是否应该是const
?