如何重载iostream运算符以对整个流执行函数

时间:2016-06-12 16:07:20

标签: c++ operator-overloading iostream

我正在写一个简单的链接列表,它工作正常,但我不得不重载ostream(好吧,我不确定我的意思是ostream还是instream!):

class List
{
public:
    void addToEnd(int data);
    /* operator overloads */
    friend std::istream& operator >> (std::istream& is, int data);
};

std::istream& operator>>(std::istream& is, int data)
{
    for(int i = 0; i < is.gcount(); i++)
    {
        // how to call ist::addToEnd(data);
    }
}

我想以某种方式使它能够:

List list();
list << 2 << 3 << 4;

因此我使用此表单而不是调用addToEnd(X)

1 个答案:

答案 0 :(得分:2)

您展示的示例是:

/platforms/android

显然,您需要重载list << 2 << 3 << 4; ,而不是operator <<operator >>的参数是<<List,因此您需要的功能是:

int

请注意,此功能不需要是朋友,因为它只使用List& operator <<(List& list, int data) { list.addToEnd(data); return list; } 的公共方法。

没有涉及istream或ostream。