discards qualifier

C++中,引用const对象时,也只能经过该对象访问其const函数,由于非const函数可能修改const对象自己,编译器避免了这一类状况会报错以下:函数

passing 'const Sales_data' as 'this' argument of  'std::string Sales_data::isbn()' discards qualifiers [-fpermissive]

源代码:this

class Sales_data{
    friend bool compareIsbn(const Sales_data &lhs,const Sales_data &rhs);
    string bnum;
    string bname;
public:
    Sales_data(string bnum,string bname):bnum(bnum),bname(bname){}
    string isbn() {
        return this->bnum;
    }
};
bool compareIsbn(const Sales_data &lhs,const Sales_data &rhs){
    return lhs.isbn()<rhs.isbn();
}

conpareIsbn由于调用的是const对象,访问它的isbn()函数也必须是const的才可以编译经过spa

class Sales_data{
    friend bool compareIsbn(const Sales_data &lhs,const Sales_data &rhs);
    string bnum;
    string bname;
public:
    Sales_data(string bnum,string bname):bnum(bnum),bname(bname){}
    string isbn() const{
        return this->bnum;
    }
};
bool compareIsbn(const Sales_data &lhs,const Sales_data &rhs){
    return lhs.isbn()<rhs.isbn();
}
相关文章
相关标签/搜索