我有两个类,Lexer和InputStream。在我的主要功能中,我创建了Lexer实例,并传入了字符串'filename'。我的目的是让Lexer将“文件名”传递到其成员变量“ is”中,以便当Lexer :: getString()调用InputStream :: getChar()时可以读出字符。我不确定如何做到这一点,因为当前,文件名可以很好地传递给Lexer,但不能传递给InputStream的构造函数。如何将文件名输入InputStream的构造函数中?
class InputStream
{
public:
InputStream(string filename)
{
in.open(filename);
}
char getChar()
{
return in.get();
}
char nextChar()
{
return in.peek();
}
private:
ifstream in;
};
class Lexer
{
public:
Lexer(string filename)
{
this->filename = filename;
}
string getString()
{
while (is.nextChar() != EOF)
{
valueSoFar.push_back(is.getChar());
}
}
private:
string valueSoFar;
string filename;
InputStream is{filename};
};
感谢您的帮助!
答案 0 :(得分:4)
您可以在Lexer Class Constructor中初始化如下所示的Inputstream实例
.on()