如何在C++中通过构造函数传递类/对象
How to pass a class/object through constructor in C++
我想制作一个包装器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
的引用,该引用必须声明为类的成员。您必须使用引用,因为流是不可复制的。
相关文章:
- 类中的 Arduino 对象构造函数设置垃圾值
- 编译错误:临时对象构造函数中缺少参数
- 双指针在使用 new 时不调用对象构造函数
- 以支持继承的方式将自身shared_ptr添加到对象构造函数中的向量中
- 在创建对象向量时,不为每个对象唯一调用默认对象构造函数
- GCC __attribute__((constructor)) 在对象构造函数之前调用
- 自定义对象构造函数在循环外部循环
- 从全局对象构造函数停止监视器计时器
- Arduino 上的 Sketch 停止在对象构造函数中执行
- 通过在引用线程对象来传递取消引用的“this”指针来在函数对象构造函数中创建线程是好是坏
- 为什么当对象构造函数投入新表达式时,为什么不调用DealLocation函数
- 临时结构对象构造函数奇数调用
- 未显式引用对象的全局对象构造函数在最终二进制文件 - LD 中被丢弃
- 为什么 Clang++ 不在另一个静态库中运行全局对象构造函数?
- 在未加载上下文的情况下在对象构造函数中使用OpenGL函数
- 为什么我们需要一个用户提供的const对象构造函数
- 对象构造函数的C++数组
- 将子结构值设置为对象构造函数中安全的纯虚拟函数返回的值
- C等价于新对象(构造函数)
- C++:直接在参数列表中使用数组文字的对象构造函数