我在头文件中有这段代码,我在ostream和istream行上有很多错误。其中一个错误是"missing";"before"&我很困惑,我是新手,对不起
#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);
thanks in advance
看起来你只需要做
#include <ostream>
#include <istream>
然后在这些行前面放置STD名称空间限定符,例如:
std::ostream& operator<<(std::ostream& out,...)
我不清楚这段代码出现的上下文,但错误表明这些声明出现在ostream
和istream
定义之前。
您是否以适当的顺序包含适当的头文件?
您省略的包括:
#include <istream>
#include <ostream>
注意:所有的标准类型,如istream
, ostream
都在一个名为std
的命名空间中。因此,为了能够使用它们,你需要:
- 前缀
std::
或 - 使用命名空间(
using namespace std;
)对于头文件来说,这是一个非常糟糕的做法,因为它可能会导致稍后包含的头文件中的命名冲突。
添加iostream include并将方法原型放入类中并声明为友元。我不能提供更多的细节,因为我是用手机回复的。
这里有一个链接:operator - overload/classlevelostreamoperatoranddistreamoperator .htm">http://www.java2s.com/Tutorial/Cpp/0200_Operator-Overloading/Classlevelostreamoperatorandistreamoperator.htm