2017-07-20 19 views
-1

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

所以我想简单地用C++编写Ruby。但是红宝石是鸭子打字,有没有办法让C++变成鸭子打字?像auto成员变量。

还是我应该放弃和辞职?

+0

'void *'是万恶之源。 – meowgoesthedog

+1

不要混淆auto关键字与弱类型 - 它可以在编译器推断时保存类型的输入 – Jimmy

+1

这里的一个更好的问题是如何将一小段代码从Ruby移植到C++,并且这需要你在询问之前展示您尝试过的内容。 –

回答

1

您不能关闭C++的类型安全规则,但您可以试着模拟一些成语,可以使用类型擦除技术对弱类型语言进行模拟,这可以使用void*std::any(它将在即将推出的C++ 17标准)。

另一种替代方法是标记联合,如std::variant(也在C++ 17中)或QVariant,因为您使用Qt,正如Mike指出的那样。已标记的联合具有必须知道该变量可能存在的潜在类型的列表的要求,但可能更容易与Visitor模式一起使用,该模式实质上是强类型版本的运行时类型选择。

还是我应该放弃和辞职?

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

+1

因为此问题已标记为“qt”。我认为值得注意的是Qt已经拥有'QVariant'。 。 。 – Mike

+0

@Mike谢谢,这就是我要找的! – Jiu