不能通过常数数据类型到一个非const函数[关闭]

问题描述 投票:-5回答:2

不能传递一个常数数据类型到非const函数。设置FUNC到上分配所述功能的值类型为const错误后,将理解的设置错误的,因为它不是可变的作为其类型为const的函数内部。

如何传递一个const变量成非const函数通过引用,并允许该功能的内容进行修改?

错误C2662:无效汽车厂::函数set_values(车载&)不能这个指针从常量汽车转换为汽车&

 // 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的变量。

c++ const
2个回答
1
投票

如果你想修改Carset_values对象必须传递一个非const引用。但是,这意味着你的volvo->GetBuild()必须返回一个非const引用过。


-1
投票

下面的解决方案,不是很大,但适用于这一点。如果你愿意后门指针。

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

最后,我对这个问题没有最少的代码工作版本道歉。试图解释它在哪里,如果你知道consts你也许能左右反弹的一些想法。所提到的意见做了支持此解决方案,多谢你。

© www.soinside.com 2019 - 2024. All rights reserved.