zoukankan      html  css  js  c++  java
  • 常见错误 无法将this 从const type 转换为 非const type

    错误原因:常量成员函数和常量对象不能调用非常量成员函数。

    示例1:常量成员函数调用自身非常量成员函数

    class Item
    {
    public:
        Item(string str):isbn(str){}
        void show() const{
            cout << this->book() << endl;
        }
    
        string book(){
            return this->isbn;
        }
    
    private:
        string isbn;
    };
    
    
    
    
    int main(int argc, char *argv[])
    {
        Q_UNUSED(argc);
        Q_UNUSED(argv);
    
        Item item("fan");
        item.show();
    
        return 0;
    
    }

    程序运行提示

    cout << this->book() << endl; 

    错误

    book()成员函数改成以下定义则正确编译运行

    string book() const{
            return this->isbn;
        }
    示例2 定义常量对象,并调用非常量方法出错,同上的将book函数改成常量的则编译通过
    class Item
    {
    public:
        Item(string str):isbn(str){}
    
        string book(){
            return this->isbn;
        }
    
    private:
        string isbn;
    };
    
    int main(int argc, char *argv[])
    {
        Q_UNUSED(argc);
        Q_UNUSED(argv);
    
        const Item item("fan");
        cout << item.book() << endl;
    
        return 0;
    
    }
     
  • 相关阅读:
    第三题 bfw在睡觉
    第二题 bfw和zhk的故事
    第一题 奶牛散步
    AC加油站7月比赛总结
    暑期机房联赛
    题解 P5663 【加工零件【民间数据】】
    题解 P1052 【过河】
    并发编程之进程
    网络编程socketserver
    网络编程之黏包
  • 原文地址:https://www.cnblogs.com/justboy/p/6525168.html
Copyright © 2011-2022 走看看