首页 > 解决方案 > 无法将 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()。并且还修改在标头中设置的非常量变量。

标签: c++constants

解决方案


如果要修改其中的Car对象,set_values则必须将其传递给非常量引用。但这意味着您也volvo->GetBuild()必须返回一个非常量引用。


推荐阅读