任何使C ++成为鸭子打字的方法

时间:2017-07-20 08:03:42

标签: c++ ruby qt

上级要求我将整个Ruby TK GUI程序更改为QML& C ++。不允许在QML中编写业务逻辑和动画。他们只想使用QML来显示Image,并在C ++端控制这些图像,甚至是动画。 最大的问题是我得到的Ruby程序,只有大量复杂的代码,没有任何关于代码的单一注释和文档。

所以我试图用C ++方式编写Ruby。但红宝石是鸭子打字,有没有办法使C ++成为鸭子打字?与auto成员变量一样。

或者我应该放弃并辞职?

1 个答案:

答案 0 :(得分:1)

您不能关闭C ++的类型安全规则,但您可以尝试使用类型擦除技术模拟弱类型语言可用的一些习语,这可以使用void*来实现,例如std::any(这将在即将到来的C ++ 17标准中引入。

另一个替代方案是标记联合,例如std::variant(也在C ++ 17中)或QVariant,因为你使用Qt,正如迈克指出的那样。标记联合要求必须知道变量可能包含的潜在类型列表,但可能更容易使用访问者模式,这实际上是运行时类型选择的强类型版本。

  

或者我应该放弃并辞职?

重新设计也许更好。将程序转换为强类型算法可能是有利的。