2011-09-27 56 views
0

如何在類中定義輸出文件流,以便我不必將它傳遞給函數。基本上我想要做的是這樣的:在類中定義輸出文件流

class A { 

private: 
    ofstream otp ; 

}; 

然後在我的構造函數,我只是有otp.open("myfile");和其他功能我有otp.open("myfile", ios::app);,但在編譯的時候失敗了,他說:

../thermo.h(18): error: identifier "ofstream" is undefined 
     ofstream otp ; 

我已確保#include <fstream>

謝謝!

+0

我想在我的每個函數中重新定義'ofstream'並不是什麼大事......只是想知道我正在嘗試做什麼是可能的,可能是爲了好奇吧 – Amit

回答

3

您需要使用完全限定名稱std::ofstream

+0

工作!優秀。謝謝。你介意給我一個小的解釋,即使當我使用命名空間std'時,爲什麼我需要這樣做? – Amit

+0

@Amit:如果你在包含(它應該去的地方!)之後把'namespace std'放在一個模塊*中,那麼在解析頭文件時聲明還沒有生效。 –

+0

嗯......我有點困惑,基本上我是'#include'頭文件,其中包含許多東西,其中之一是''等。在include的末尾,它包含'使用名稱空間std'。因此,我可以在包含這個「全局頭文件」的所有函數中使用'cout'和其他'std ::'函數。那麼我怎麼不得不明確地聲明'std :: ofstream'或者在我的'#include「globals.h''下面添加一個額外的'using namespace std'? – Amit

0

您需要用地方using namespace std;聲明你的類聲明的上方或聲明otp變量std::ofstream因爲它的std命名空間中的存在。

+2

請不要告訴人們在標題中放置'using namespace std'是一個選項。 –

+0

如果我包含globals.h「',其中'globals.h'具有'using namespace std;'在裏面怎麼辦?怎麼沒有轉化爲我的'thermo.h'文件? – Amit

+0

@Amit你確定'using namespace std;'不在其他作用域('namespace',function)嗎? – curiousguy