将流对象从主程序传递到类

时间:2009-05-11 18:07:49

标签: c++

这是我要做的事情:
1)在我的主体中打开一个ofstream对象。我可以做到这一点没问题。
2)将此对象与文件名关联。没问题。
3)将此对象传递给类并在此类中发送输出。我不能这样做。
这是我的代码。我将不胜感激任何帮助。谢谢!

#include <fstream>
#include <iostream>
using namespace std;

typedef class Object
{
public:
 Object(ofstream filein);
} Object;

Object::Object(ofstream filein)
{
 filein << "Success";
}

int main (int argc, char * const argv[])
{
 ofstream outfile;
 outfile.open("../../out.txt");

 Object o(outfile); 

 outfile.close();
 return 0;
}

2 个答案:

答案 0 :(得分:9)

您必须通过引用传递流对象:

Object::Object( ofstream & filein )
{
 filein << "Success";
}

为什么你在课堂上使用typedef?它应该是这样的:

class Object
{
   public:
     Object(ofstream & filein);
};

答案 1 :(得分:2)

值得一提的是,在c ++ 0x中你将有另外的选择(除了通过引用或指针传递):

  1. 的std ::移动。流不可复制,但您可以将它们移动到另一个地方(这取决于流是否会实现移动运算符,但它们可能会这样)。
  2. 的unique_ptr。流不可复制。使用指针时,会出现资源泄漏的风险。当您希望将流存储在集合中时,使用shared_ptr会包含不必要的成本。 Unique_ptr解决了这个问题。您将能够以安全有效的方式将流存储在集合中。