0

我是一个学习者。我正在研究运算符重载。我正在尝试编写重载 [] 的代码并打印成员数组中的元素。但是当我重载 << 以打印成员数组时,我收到错误,ostream& does not have a type。我在这里做错了什么?另外,如果我有一个有两个成员数组的类,我该怎么办?下面是我的代码:

#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;
}
4

2 回答 2

2

你放了

int main()
{
    using namespace std;
    //....

这在您声明您的<<运营商的地方看不到。一种解决方案是更改签名以包含名称:

在课堂里:

std::ostream& operator<<(std::ostream& out)

接着

std::ostream& Digit::operator<<(std::ostream& out)

当你在那里时,我想知道它是否应该是const

于 2015-12-04T10:15:42.367 回答
0

你一定忘记了命名空间 try - std::ostream &operator<<(std::ostream &out)

于 2021-09-09T18:10:24.210 回答