首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我有一个创建另一个类的实例的类。如何通过第一个类将变量传递到第二个类的实例化中?

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

Stack Overflow用户
提问于 2018-09-30 07:03:23
回答 1查看 57关注 0票数 -2

我有两个类,Lexer和InputStream。在我的main函数中,我创建了一个Lexer实例,传入字符串'filename‘。我的意图是让Lexer将'filename‘传递给它的成员变量' is ',这样InputStream::getChar()就可以在Lexer::getString()调用它时读出字符。我不确定如何做到这一点,因为目前,filename可以很好地传递给Lexer,但不会传递到InputStream的构造函数中。如何将文件名放入InputStream的构造函数?

代码语言:javascript
复制
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};
};

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-30 07:25:00

您可以在Lexer类构造函数中初始化Inputstream实例,如下所示

代码语言:javascript
复制
class Lexer
{
    public:
    Lexer(string filename)
    : is(filename)
    {
        this->filename = filename;
    }
    string getString()
    {
        valueSoFar.push_back(is.getChar());
    }

    private:
    string valueSoFar;
    string filename;
    InputStream is;
};
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52573244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档