• error C2662, cannot convert ‘this’ pointer from 冷夜


    error C2662, cannot convert ‘this’ pointer from ‘const class ’ to ‘class &’

    看一下导致这个编译错误的例子:

    class COwnInt

    {

    public:

    int get();

    private:

    int m_n;

    };

    int COwnInt::get()

    {

    return m_n;

    }

    int main()

    {  

    const COwnInt own;

    own.get();

    return 0;

    }

    这个编译错误的主要原因是:程序中定义了一个const的类对象own,然后又用own调用了一个非const的函数get()。

    由于const对象在调用成员函数的时候,会将this指针强行转换为const this,所以它将无法找到相应的const get函数,并且编译器也无法将一个const的对象转化为一个普通对象来调用这个普通的get方法,所以就会产生如题的编译错误。

    至于const的用法,我们已经已经在C++/const详解中详细的介绍了const的用法,这里就不再赘述。

    解决方法是:将get()函数修改为const函数,也就是这样:

    class COwnInt

    {

    public:

    int get() const; //将get函数声明为const型

    private:

    int m_n;

    };

    int COwnInt::get() const //请注意,这里也要追加const关键字

    {

    return m_n;

    }

    当然,还有一个解决方法是将const COwnInt own改成COwnInt own。

  • 相关阅读:
    【CCPC2020网络赛11】Convolution
    【CCPC2020网络赛02】Graph Theory Class
    全国中学生网安竞赛出题总结
    XDU2020ACM校赛总结
    CTF错误集合
    【洛谷2916】图的遍历
    20200420(ABC)题解 by 辛晓东
    20200402(ABC)题解 by 孙晨曦
    20200406(ABC)题解 by 徐光旭
    20200407(DE)题解 by 孙晨曦
  • 原文地址:https://www.cnblogs.com/gamesky/p/2690226.html
Copyright © 2020-2023  润新知