加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C:在从const指针指向的对象中调用非const函数(错误C2662)

发布时间:2020-12-16 06:45:40 所属栏目:百科 来源:网络整理
导读:我有一个带有指向对象的const指针的结构.它是const,因此指针不会改变,我不希望对象保持不变.我想在该对象中调用非常量函数,从而收到以下错误: error C2662: ‘my_namespace::MyClass::myFunc’ : cannot convert ‘this’ pointer from ‘const my_namespac
我有一个带有指向对象的const指针的结构.它是const,因此指针不会改变,我不希望对象保持不变.我想在该对象中调用非常量函数,从而收到以下错误:

error C2662:
‘my_namespace::MyClass::myFunc’ :
cannot convert ‘this’ pointer from
‘const my_namespace::MyClass’ to
‘my_namespace::MyClass &’

Conversion loses qualifiers

struct MyStruct
{
    MyStruct( const MyClass* init_my_class_ptr );
    const MyClass* my_class_ptr;
};

...
struct_instance.my_class_ptr->aNonConstFunc();
...

假设我不能创建一个NonConConfunc()const.

解决方法

将结构更改为:

struct MyStruct
{
    MyStruct( const MyClass* init_my_class_ptr );
    MyClass* const my_class_ptr;
};

这将使指针,而不是指针,const.

更详细的解释(参见Wikipedia):const关键字应用于它之前的任何内容,除非前面没有任何内容,然后它适用于它之后的内容.所以:

const A * object; // Non-const pointer to const A
A const * object; // Non-const pointer to const A
A * const object; // Const pointer to non-const A
const A * const object; // Const pointer to const A
A const * const object; // Const pointer to const A

现在,这只是个人偏好,但这就是为什么我总是把const放在什么应该是const之后.当在代码中的任何地方应用时,这使得很容易弄清楚究竟应该是什么const.如果const适用于语句之前或之后的语句,则无需进行解密.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读