我有一个创建另一个类的实例的类。如何通过第一类将变量传递给第二类的实例化?

时间:2018-09-29 23:03:23

标签: c++

我有两个类,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};
};

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您可以在Lexer Class Constructor中初始化如下所示的Inputstream实例

.on()