class TextQuery
{
public:
using line_no = std::vector<std::string>::size_type;
TextQuery(std::ifstream&);
QueryResult query(const std::string&) const;
private:
std::shared_ptr<std::vector<std::string>> file;
std::map<std::string, std::shared_ptr<std::set<line_no>>> vm;
};
TextQuery::TextQuery(std::ifstream &is): file(new std::vector<std::string>)
{
std::string text;
while (std::getline(is, text)) {
file->push_back(text);
int n = file->size() - 1;
std::istringstream line(text);
std::string word;
while (line >> word) {
auto& lines = vm[word];
if (!lines) {
lines.reset(new std::set<line_no>);
}
lines->insert(n);
}
}
}
IDE: строка ошибки Visual Studio 2019:
while (std::getline(is, text)) {
IDE выводит список типов аргументов функции getline: "std :: ifstream, std :: string".так что это не согласуется с сигнатурой функции getline (string).но is
параметр из функционального параметра, который имеет тип "std :: ifstream &".Я запутался здесь, почему IDE выводит его как "std :: ifstream" вместо "std :: ifstream &"?Кто-нибудь может дать некоторые мысли о том, как это исправить?