У меня есть этот код в моем заголовочном файле, и я получил множество ошибок в строках 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);
спасибо заранее
Похоже, вам просто нужно сделать
#include <ostream> #include <istream>
, а затем поместить перед ними спецификатор пространства имен std, то есть:
std::ostream& operator<<(std::ostream& out,...)
Мне не ясно, в каком контексте появляется этот код, но ошибка предполагает, что эти объявления появляются до того, как определены ostream и istream.
ostream
istream
Включаете ли вы правильные заголовочные файлы в правильном порядке
Вы не указали:
#include <istream> #include <ostream>
Примечание: все стандартные типы, такие как istream, ostream, находятся в пространстве имен с именем std.Таким образом, чтобы иметь возможность использовать их, вам необходимо:
std
std::
using namespace std;
Добавьте iostream include и поместите прототип метода в класс и объявите его другом. Я не могу дать более подробную информацию, так как отвечаю со своего мобильного телефона.
Вот ссылка: Перегрузка оператора / Classlevelostreamoperatorandistreamoperator.htm "> http://www.java2s.com/Tutorial/Cpp/0200_Operator-Overloading/Classlevelostreamoperatorandistreamoperator.htm