无法将const数据类型传递给非const函数

时间:2019-02-08 10:23:38

标签: c++ 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()。并且还可以修改标头中设置的非const变量。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

下面的解决方案虽然不是很好,但是可以解决这个问题。如果愿意,可以使用后门指针。

CarFactory* ptr = const_cast<CarFactory*>(this);

最后,对于问题中没有最低限度的工作版本,我深表歉意。试图解释一下它,如果您知道const,那么您可能可以在其中跳出一些想法。提到的评论确实支持此解决方案,谢谢。