如何在C++中通过构造函数传递类/对象

How to pass a class/object through constructor in C++

本文关键字:对象 构造函数 C++      更新时间:2023-10-16

我想制作一个包装器Filer类来使用fstream库。

因此,我想通过我自己的Filer类的构造函数传递fstream类的一个实例,这导致了以下代码:

Filer::Filer(fstream fileObject)
{
    fileObject this->fileObj;
};

尽管当我编译它时,会抛出一个错误:

1>Filer.cpp(10): error C2143: syntax error : missing ';' before 'this'

当我这样做的时候:

Filer::Filer(fstream fileObject)
{
    this->fileObj = fileObject;
};

它抛出了这个错误,抱怨fstream不能以这种方式分配;

error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::fstream' (or there is no acceptable conversion)

然后,我应该如何使我的构造函数接受类型为fstream的对象?

您所拥有的不是C++。试试这个:

Filer::Filer(fstream& fileObject)
  : fileObj(fileObject)
{
}

它使用"初始化列表"来存储对fileObject的引用,该引用必须声明为类的成员。您必须使用引用,因为流是不可复制的。