В моем классе InVal
, у меня есть метод и оператор друг объявил, как показано ниже:Недопустимые аргументы в вызове метода
void Parse(std::istream& file) throw (int);
friend std::istream& operator >> (std::istream& is, const InVal& id3);
Друг оператор >>
код заключается в следующем:
std::istream& operator >> (std::istream& is, const InVal& val) {
val.Parse(is);
return is;
}
На линии val.Parse(is)
Я получаю Invalid arguments
с предложением кандидата void Parse(std::basic_istream<char, std::char_traits<char>>&)
. В iosfwd
, у меня есть
typedef basic_istream<char> istream
Так что где-то что-то не соответствует. Почему я получаю ошибку и как ее разрешить?
Ах! Я все время укусаюсь этим. –
Может быть, лучше сделать второй аргумент 'operator >>' non const? Я предполагаю, что в методе Parse вы каким-то образом загружаете содержимое InVal. –
@PavelDavydov Да, это именно то, что я сделал. 'Const' пришел, потому что я сделал copy-paste из' << 'оператора, а затем изменил' ostream' на 'istream', но забыл удалить' const' из второго параметра. –