我想创建一个包装器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
类型的对象?
答案 0 :(得分:5)
你所拥有的不是C ++。试试这个:
Filer::Filer(fstream& fileObject)
: fileObj(fileObject)
{
}
使用"初始化列表"存储对fileObject
的引用,该引用必须声明为该类的成员。并且您必须使用引用,因为流不可复制。