该对象具有与成员函数 C++ 不兼容的类型限定符
The object has type qualifiers that are not compatible with the member function C++
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 运算符的实现中。
我看不出问题出在哪里,我有其他代码可以使用相同的实现。
错误信息:
The object has type qualifiers that are not compatible with the member function "sict::Course::display" object type is const sict::Course
在 operator<<()
中,a.display();
失败,因为 a
被声明为 const
。您不能在其上调用非常量成员函数。
Course::display()
应该声明为 const 成员函数,它应该不会修改任何东西。
void Course::display() const {
// ^^^^^
...
}
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 运算符的实现中。
我看不出问题出在哪里,我有其他代码可以使用相同的实现。
错误信息:
The object has type qualifiers that are not compatible with the member function "sict::Course::display" object type is const sict::Course
在 operator<<()
中,a.display();
失败,因为 a
被声明为 const
。您不能在其上调用非常量成员函数。
Course::display()
应该声明为 const 成员函数,它应该不会修改任何东西。
void Course::display() const {
// ^^^^^
...
}