在这里找到:https://github.com/tpaviot/oce/blob/master/src/BRepAdaptor/BRepAdaptor_Curve.cxx

我想知道的那一行是:
((GeomAdaptor_Curve*) (void*) &myCurve)->Load(C,First,Last);myCurve已经定义为GeomAdaptor_Curve。因此,看起来好像将指向myCurve的指针转换为void*,然后将其转换为GeomAdaptor_Curve*,然后取消引用并在其上调用Load。这样做可能是什么原因,而不是简单地调用myCurve.Load

最佳答案

请注意,该语句出现在const成员函数中。因此,&myCurve的类型实际上是GeomAdaptor_Curve const*。这似乎是一个丑陋而令人困惑的说法

const_cast<GeomAdaptor_Curve&>(myCurve).Load(C,First,Last);

并可能会变得更加复杂,以便“避免”编译器警告,这是您尝试使用C样式强制转换来绕过const时得到的。

关于c++ - 这个C++强制转换代码在做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25417045/

10-11 22:48