方法调用中的参数无效

时间:2014-02-10 15:39:58

标签: c++

在我的班级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

所以某些地方不匹配。为什么我会收到错误,我该如何解决?

1 个答案:

答案 0 :(得分:2)

valconst引用,这意味着您只能在其上调用const个成员函数。您需要将Parse声明为const成员函数,如下所示:

void Parse(std::istream& file) const throw (int);

这承诺编译器Parse不会修改它被调用的InVal对象。