c++ - 无法将 const 数据类型传递给非 const 函数
问题描述
不能将 const 数据类型传递给非 const 函数。在将 func 设置为 const 类型后,在函数中分配值时的错误将是可以理解的错误集,因为它在 const 类型的函数内部是不可变的。
如何通过引用将 const 变量传递给非 const 函数,并允许修改函数的内容?
错误 C2662: void CarFactory::set_values(Car &) 无法将此指针从 const Car 转换为 Car &
// Tried this
//Car& newCarData = const_cast<Car&>(myCar);
const Car& myCar = volvo->GetBuild();
// Tried this
//Car& newCarData = const_cast<Car&>(myCar);
set_values(&myCar);
void CarFactory::set_values(const Car& myCar){
// do some assigning here for mutable variables declared in the header
}
应该能够在没有错误的情况下调用它并将数据传递给 set_values()。并且还修改在标头中设置的非常量变量。
解决方案
如果要修改其中的Car
对象,set_values
则必须将其传递给非常量引用。但这意味着您也volvo->GetBuild()
必须返回一个非常量引用。
推荐阅读
- scala - Scala 边界交叉点
- python-3.x - PySpark 将 UDF 应用于 collect_list 数组中的指数加权平均值
- android - Firebase 多查询瓶颈
- c# - 使用 LINQ 查询的表达式树构建 Any()
- python - 从 python3.6 转换 keras 模型。至 3.5
- python - “您尚未定义默认连接”与 mongoengine 的 Flask 应用程序的 Elastic Benstalk WSGI 部署
- php - 在同一个函数中传递一个变量并调用请求,在 laravel 中更新帖子
- firebase - Firebase 函数 onWrite 返回未定义的 event.data
- fortran - 如何对以数组形式出现的参数的结果求和
- c# - LINQ TO ENTITY 无法与枚举类型进行比较