常量转换非常量很危险,常量的设计是为了不改变对象成员值,如果你硬要转换,可以:
(QgsFields &)对象名;//C语言风格的强转
const_cast<引用类型或指针类型>(对象名);//C++风格的强转,去const化
举例如下:
const int a = 1;
int &b = (int&)a; //合法
int &c = a; //不合法
int &d = const_cast<int&>(a);//合法
const_cast<类名&>(*this).GetImages();
类似 VS2013+QT5编译时error C2662: 不能将“this”指针从“const QgsFields”转换为“QgsFields &” : this指针也可以转换
最新推荐文章于 2023-10-23 11:26:29 发布
本文探讨了在C++和C语言中将常量转换为非常量的潜在风险,通过示例展示了如何使用C语言风格和C++风格的强制类型转换。文中指出,这样的转换可能导致不可预知的行为,特别是在尝试修改常量对象时。同时,文章提醒开发者应谨慎处理常量,遵循常量不变性的原则。
摘要由CSDN通过智能技术生成