C ++ операторы << и >> в заголовочном файле, сделаны очень неправильно - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть этот код в моем заголовочном файле, и я получил множество ошибок в строках 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 голосов
/ 19 апреля 2011

Похоже, вам просто нужно сделать

    #include <ostream>
    #include <istream>

, а затем поместить перед ними спецификатор пространства имен std, то есть:

    std::ostream& operator<<(std::ostream& out,...)
3 голосов
/ 19 апреля 2011

Мне не ясно, в каком контексте появляется этот код, но ошибка предполагает, что эти объявления появляются до того, как определены ostream и istream.

Включаете ли вы правильные заголовочные файлы в правильном порядке

1 голос
/ 19 апреля 2011

Вы не указали:

#include <istream>
#include <ostream>

Примечание: все стандартные типы, такие как istream, ostream, находятся в пространстве имен с именем std.Таким образом, чтобы иметь возможность использовать их, вам необходимо:

  • поставить перед ними префикс std:: или
  • использовать пространство имен (using namespace std;).Это очень плохая практика для заголовочного файла, так как это может привести к конфликтам имен в заголовочных файлах, которые будут включены позже.
0 голосов
/ 19 апреля 2011

Добавьте iostream include и поместите прототип метода в класс и объявите его другом. Я не могу дать более подробную информацию, так как отвечаю со своего мобильного телефона.

Вот ссылка: Перегрузка оператора / Classlevelostreamoperatorandistreamoperator.htm "> http://www.java2s.com/Tutorial/Cpp/0200_Operator-Overloading/Classlevelostreamoperatorandistreamoperator.htm

...