zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    法正(17):玄德
    法正(16):舌战
    法正(15):卢氏
    法正(14):寿星
    struts2笔记---struts2的执行过程
    Oracle数据库(一)
    flask的使用(一)
    struts2--笔记(一)
    docker基础(二)
    docker安装及问题处理
  • 原文地址:https://www.cnblogs.com/gamesky/p/2690226.html
Copyright © 2011-2022 走看看