discards qualifier

Posted 史昊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了discards qualifier相关的知识,希望对你有一定的参考价值。

C++中,引用const对象时,也只能通过该对象访问其const函数,因为非const函数可能修改const对象本身,编译器避免了这一类情况会报错如下:

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

源代码:

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的才能够编译通过

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();
}

 

以上是关于discards qualifier的主要内容,如果未能解决你的问题,请参考以下文章

error: passing ‘const AppJniCommand’ as ‘this’ argument discards qualifiers [-fpermissive]

为啥 GL_RASTERIZER_DISCARD 不能让我写入模板缓冲区?

复制构造函数

手把手写C++服务器(30):手撕代码——基于TCP/IP的抛弃服务discard

@Qualifier

使用 ref-qualifiers 解决重载问题