Передача объекта ifstream в функцию, для которой требуется тип istream

У меня есть эта функция

void StrType::saveString(bool skip, InType charsAllowed, std::istream& inStream)
{ //something cool
};

и эти два

void StrType::getString(bool skip, InType charsAllowed)
{
saveString(skip, charsAllowed, std::cin);
}
void StrType::getStringFile(bool skip, InType charsAllowed,  std::ifstream& inFile)
{
saveString(skip, charsAllowed, inFile);
}

Можете ли вы сказать мне, почему компилятор жалуется, что

strtype.cpp: In member function ‘void StrType::getStringFile(bool, InType, std::ifstream&)’:
strtype.cpp:42:39: error: no matching function for call to ‘StrType::saveString(bool&, InType&, std::ifstream&)’
strtype.cpp:42:39: note: candidate is:
strtype.cpp:9:6: note: void StrType::saveString(bool, InType, std::istream&)
strtype.cpp:9:6: note:   no known conversion for argument 3 from ‘std::ifstream {aka std::basic_ifstream<char>}’ to ‘std::istream& {aka std::basic_istream<char>&}’

как класс ifstream наследует от istream? Или я здесь не прав?

1

Решение

Я думаю, что наиболее вероятной причиной является отсутствие <fstream> заголовочный файл Если все, что вы включили, <iosfwd> тогда компилятор этого не узнает ifstream наследуется от istream,

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]