2

我的头文件中有这段代码,我在 ostream 和 istream 行上有很多错误。一个错误是“&”之前的“缺少”;”我很困惑,我对此很抱歉

#pragma once

class ArrayIntStorage
{
public:
    void readFromFile();
    bool setReadSort(bool);
    void sortStd();
    void sortOwn();

    ArrayIntStorage(void);
    ~ArrayIntStorage(void);
};  

ostream& operator<< (ostream &out, const ArrayIntStorage &a);
istream& operator>> (istream &in, ArrayIntStorage &b);

提前致谢

4

4 回答 4

4

看起来你只需要做

    #include <ostream>
    #include <istream>

然后在这些行的前面放置一个 std 命名空间限定符,即:

    std::ostream& operator<<(std::ostream& out,...)
于 2011-04-19T15:33:30.393 回答
3

我不清楚此代码出现的上下文,但错误表明这些声明出现在之前ostreamistream已定义。

您是否以正确的顺序包含正确的头文件?

于 2011-04-19T15:34:28.007 回答
1

您省略的包括:

#include <istream>
#include <ostream>

注意:所有标准类型,如istreamostream都存在于名为std. 因此,为了能够使用它们,您需要:

  • 在它们前面加上std::or
  • 使用命名空间 ( using namespace std;)。这对于头文件来说是一种非常糟糕的做法,因为它可能会导致稍后包含的头文件中的命名冲突。
于 2011-04-19T15:33:59.690 回答
0

添加 iostream 包含并将方法原型放入类中并将其声明为朋友。由于我是通过手机回复的,因此我无法提供更多详细信息。

这是一个链接:Operator-Overloading/Classlevelostreamoperatorandistreamoperator.htm">http://www.java2s.com/Tutorial/Cpp/0200_Operator-Overloading/Classlevelostreamoperatorandistreamoperator.htm

于 2011-04-19T15:37:23.310 回答