2013-12-17 1 views
-3

Во-первых, я все рассмотрел для решений, и я не могу его исправить. При попытке скомпилировать исходный код возникает следующая ошибка.ошибка: идентификатор «ostream» не определен

g++ -c -I/home/jcallahan/ACM/include/FANSI -I/home/jcallahan/ACM/FourtyTwo/Base -I/home/jcallahan/ACM/FourtyTwo/FunctionSpaces -I/home/jcallahan/ACM/FourtyTwo/MeshLib LagrangeFunctions.cpp In file included from /home/jcallahan/ACM/include/FANSI/MatrixVector.h:6:0, from LagrangeFunctions.cpp:17: /home/jcallahan/ACM/include/FANSI/Matrix.h:184:24: error: ‘ostream’ has not been declared void WriteToTextFile(ostream &) ;

ошибка исходит от включенного Matrix.h и vector.h (у меня есть несколько из этих ошибок только с указанием одного). Я считаю, что ошибка находится в пределах Matrix.h/Vector.h. Код отключен, потому что я не думаю, что функции-члены классов имеют к этому какое-то отношение.

#include "AbstractMatrix.h" 

class Matrix : public AbstractMatrix 
{ 
    friend std::ostream &operator<<(std::ostream &,const Matrix &) ; 
    friend std::istream &operator>>(std::istream &, Matrix &) ; 
public: 

У кого-нибудь есть подсказка, что происходит или как я могу это исправить? Для получения дополнительной информации я использую компилятор g ++.

+1

добавить '#include ' в начало вашего файла – Mgetz

+1

Кажется, что один из ваших заголовков использует 'ostream' без квалификации (' std :: ') и без подходящей декларации' using' или 'using'. Независимо от квалификации подходящий заголовок ('' или '') также может отсутствовать. –

+0

Mgetz, Я добавил в include и ничего не изменил. Dietmar, У меня нет «использования пространства имен std» в любом из моих заголовков, но только это дает мне проблему. Также при компиляции с использованием компиляторов PGI он компилируется без проблемы – jgCallahan

ответ

2

Файл вы вывесили должны включить эту строку:

#include <iostream> 

Кроме того, сообщение об ошибке содержит следующее определение:

void WriteToTextFile(ostream &) ; 

Что нужно изменить, чтобы std::ostream, как и другие.

+0

В файле заголовка? Я думал, что нет-нет, чтобы помещать их в заголовочные файлы? – jgCallahan

+0

Вероятно, вы путаете no-no с 'using namespace std;', который _is_ a no-no помещает в заголовочные файлы. – rightfold

+0

Это не-нет. В одном из объявлений используется 'std :: ostream', поэтому его очень важно включить. – s4y