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,因此指针不会改变,我不希望对象保持不变.我想在该对象中调用非常量函数,从而收到以下错误:
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适用于语句之前或之后的语句,则无需进行解密. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |