0
在我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'出现是因为我从'<<'运算符复制粘贴,然后将'ostream'改为'istream',但忘记从第二个参数中删除'const'。 –