我刚刚开始学习C++ 11,我有这个头文件:
#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);
};这个代码是:
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方法?
发布于 2021-07-24 14:27:32
Process(&iss);iss是std::istringstream。在表达式中使用时,&是address-of运算符。
&iss表达式的结果是指向std::istringstream或std::istringstream *的指针。
void Process(const std::istringstream& in);它将此函数声明为将对const std::istringstream &的引用作为参数,而不是指针。
在declaration,的上下文中,&表示引用类型。
在表达式或声明中使用&意味着不同的事情。事实上,&完全可以在表达式中表示其他东西,这取决于它出现在哪里。
https://stackoverflow.com/questions/68510870
复制相似问题