2011-09-27 67 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