首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pass::istringstream作为参数不起作用

pass::istringstream作为参数不起作用
EN

Stack Overflow用户
提问于 2021-07-24 14:20:29
回答 1查看 78关注 0票数 2

我刚刚开始学习C++ 11,我有这个头文件:

代码语言:javascript
复制
#pragma once
#include <string>
#include <fstream>
#include <sstream>

class Parser
{
public:
    Parser();
    ~Parser();

    void Parse(const std::string& path);

private:

    std::ifstream inFile;

    void LoadFile(const std::string& path);

    void Process(const std::istringstream& in);
};

这个代码是:

代码语言:javascript
复制
void Parser::LoadFile(const std::string& path)
{
    if (!Exists(path))
        throw std::exception("File not found.");
    else
    {
        inFile.open(path);

        std::string line;
        while (std::getline(inFile, line))
        {
            // Input stream.
            std::istringstream iss(line);
            Process(&iss);
        }
    }
}

void Parser::Process(const std::istringstream& in)
{
}

但是,我在Process(&iss);行中得到了以下错误

没有适当的构造函数将"std::istringstream *“转换为"std::basic_istringstream ”

如何声明Process方法?

EN

回答 1

Stack Overflow用户

发布于 2021-07-24 14:27:32

代码语言:javascript
复制
Process(&iss);

issstd::istringstream。在表达式中使用时,&是address-of运算符。

&iss表达式的结果是指向std::istringstreamstd::istringstream *的指针。

代码语言:javascript
复制
void Process(const std::istringstream& in);

它将此函数声明为将对const std::istringstream &的引用作为参数,而不是指针。

declaration,的上下文中,&表示引用类型。

在表达式或声明中使用&意味着不同的事情。事实上,&完全可以在表达式中表示其他东西,这取决于它出现在哪里。

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

https://stackoverflow.com/questions/68510870

复制
相关文章

相似问题

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