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

And*_*ndy 0 c++ iostream operator-overloading 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;
}
Run Code Online (Sandbox Code Playgroud)

问题在下面的ostream运算符的实现中发生a.display()。我看不出问题出在哪里,我还有其他代码可用于相同的实现。

错误信息:

该对象的类型限定符与成员函数“ sict :: Course :: display”不兼容。对象类型为const sict :: Course

son*_*yao 6

在中operator<<()a.display();由于a声明为const而失败。您不能在其上调用非常量成员函数。

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

void Course::display() const {
                       ~~~~~
    ...
}
Run Code Online (Sandbox Code Playgroud)