不能将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变量。
答案 0 :(得分:1)
如果要修改Car
中的set_values
对象,则必须向其传递非常量引用。但这意味着您的volvo->GetBuild()
也必须返回非常量引用。
答案 1 :(得分:-1)
下面的解决方案虽然不是很好,但是可以解决这个问题。如果愿意,可以使用后门指针。
CarFactory* ptr = const_cast<CarFactory*>(this);
最后,对于问题中没有最低限度的工作版本,我深表歉意。试图解释一下它,如果您知道const,那么您可能可以在其中跳出一些想法。提到的评论确实支持此解决方案,谢谢。