我的Filer.h
文件中有以下类:
#include<string>
#include<boost\filesystem.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()
{
}
我的问题是,我希望在构造std::fstream
类时有一个Filer
的实例。我希望将此类分配给fileStr
变量。那怎么能解决我的问题呢?
答案 0 :(得分:2)
如果你想创建一个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)
{
}
答案 1 :(得分:0)
你有两个错误,第一个是你现在应该在声明中有初始化列表。另一个错误是,如果你想要一个引用,你需要将std::fstream
引用作为参数传递给构造函数,并将其用于初始化程序。
如果构造函数很简单,就像你的类所示,你可以使它成为一个内联函数:
Filer(std::fstream& str) : fileStr(str)
{}