该对象具有与成员函数C ++不兼容的类型限定符

时间:2016-08-05 03:45:14

标签: c++ operator-overloading iostream member-functions

std::ostream& operator<<(std::ostream&, const Course&);

void Course::display() {
    std::cout << std::left << courseCode_ << " | " << std::setw(20) << courseTitle_ << " | " << std::right
        << std::setw(6) << credits_ << " | " << std::setw(4) << studyLoad_ << " | ";
}

std::ostream& operator<<(std::ostream& os, const Course& a) {
    a.display();
    return os;
}

a.display()下面的ostream运算符的实现中出现问题。 我不知道问题出在哪里,我有其他代码可以使用相同的实现。

错误消息:

  

该对象具有与成员函数不兼容的类型限定符&#34; sict :: Course :: display&#34;对象类型是const sict :: Course

1 个答案:

答案 0 :(得分:5)

operator<<()中,a.display();失败,因为a被声明为const。你不能在上面调用非const成员函数。

Course::display()应该被声明为const成员函数,它不应该修改任何东西。

void Course::display() const {
                       ~~~~~
    ...
}