2013-12-17 194 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.hVector.h未來(I有更多的這些錯誤只示出一個)。我相信錯誤在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

加上'#包括'到您的文件 – Mgetz

+1

的頂部看來你的頭一個使用'ostream'無資質('的std ::'),並沒有合適的'using'聲明或'using'指令。與資格無關,合適的標題(''或'')也可能會丟失。 –

+0

Mgetz, 我加入了include,它沒有改變任何東西。 Dietmar, 我沒有在任何頭文件中使用「命名空間標準」,但只有這一個給我一個問題。當編譯使用PGI編譯器時,它編譯時沒有問題 – jgCallahan

回答

2

你貼應包含此行的文件:

#include <iostream> 

此外,錯誤消息包括這樣的定義:

void WriteToTextFile(ostream &) ; 

,需要加以改變以std::ostream其他人一樣。

+0

在頭文件中?我認爲這是一個不允許把它們放在頭文件中? – jgCallahan

+0

您可能會將no-no與'using namespace std;'混淆,這是一個禁止放入頭文件的禁止。 – rightfold

+0

這不是一個禁忌。其中一個聲明使用'std :: ostream',所以包含它是非常重要的。 – s4y

相關問題