类的头文件中的C++初始化程序列表
C++ Initializer list in the header file of a class
我的Filer.h
文件中有以下类:
#include<string>
#include<boostfilesystem.hpp>
#include<fstream>
using namespace boost::filesystem;
#ifndef FILER_H
#define FILER_H
class Filer()
{
public :
// I have tried many other syntax, but none of them worked.
Filer() : fileStr();
std::fstream& fileStr;
};
#endif
然后在我的Filer.cpp
中,我这样定义它:
Filer::Filer() : fileStr()
{
}
我的问题是,当构造Filer
类时,我希望有一个std::fstream
的实例。我想把这个类分配给fileStr
变量。那么我该如何解决我的问题?
如果您想创建一个包含在此类中的std::fstream,只需从以下行中删除"与"号:
std::fstream& fileStr;
制作:
std::fstream fileStr;
fstream将自动构建。
如果您希望fileStr引用在其他地方定义的std::fstream,那么您需要一个构造函数来引用该外部fstream并使用它来初始化fileStr的引用。该代码看起来像:
Filer(std::fstream & stream) : fileStr(stream)
{ }
std::fstream& fileStr;
如果在cpp文件中定义构造函数,则不能指定bool返回值,并且必须具有参数,这样它看起来像:
Filer::Filer(std::fstream & stream)
: fileStr(stream)
{
}
您有两个错误,第一个错误是您现在应该在声明中有初始值设定项列表。另一个错误是,如果您想要引用,则需要将std::fstream
引用作为参数传递给构造函数,并将其用于初始值设定项。
如果构造函数很简单,比如为您的类显示的构造函数,那么您可以使它成为一个内联函数:
Filer(std::fstream& str) : fileStr(str)
{}
相关文章:
- 指定的初始化程序
- 错误:为函数__THROW__asm提供了初始化程序
- C++引物动态数组初始化程序的数目超过大小
- 在C++初始化程序列表中使用Integer Literals
- 当指定初始化程序的顺序和字段声明不一致时,clang可以删除函数调用
- 模板非静态数据成员初始化程序何时实例化
- C++-数组的初始化程序太多
- 类的头文件中的C++初始化程序列表
- std::array不再发生初始化程序语法错误
- C++初始化程序上的Cortex M4硬故障
- 初始化程序列表
- 添加大数字C++-初始化程序失败
- 避免对自定义类使用初始化程序列表
- rvalue作为初始化程序来构造对象
- 数组的初始化程序太多错误
- 自定义矢量类模板初始化程序失败
- 初始化程序列表和赋值重载(运算符=)
- 引用包装的初始化程序列表
- 结构:初始化程序出错
- c++初始化程序列表