以浮点数接受u

时间:2016-07-27 08:40:22

标签: c++ floating-point

我有一组c ++文件,这些文件是由我们无法更改的工具自动生成的。这些文件在运行时根据用户输入进行编译。这些文件有`double f = userInputs;定义。 userInputs由可能提供25u输入的用户提供。所以自动生成的文件会写入双f = 25u。 现在我希望在userInputs中你可以在代码中替换为* 1.06-6。但这是自动生成的,而不是我的控制。

所有自动生成的代码都使用我控制的文件stdAfx.h。我可以在这个文件中执行#define或typedef ec,这样即使用户说25u,带有double f = userInputs的自动生成的文件也会正确编译吗?

1 个答案:

答案 0 :(得分:-1)

你可以做#define double DoubleWrapperDoubleWrapper将有一个构造函数接受unsigned int,将其内部存储为双倍乘以您想要的数字。您可能也想添加一个普通的double构造函数。

你还应该向double添加一个强制转换操作符,它将返回它内部存储的变量。

这样你的被替换的双子就像双处所有,除非:

  • 你提供了一个unsigned int
  • 你没有明确地使用它作为另一种类型,因为C ++不会链接多个隐式强制转换

根据项目的结构,这可能是可以接受的,也可能是太多的限制。

另请注意:

  • 这是非标准的,您不应该重新定义关键字。但每个编译器都允许它
  • 如果项目的其他部分使用此stdAfx.h,则可能导致难以理解的问题,因为它会改变双重行为的一般情况。由于这可能是您的每个文件使用的预编译标头,因此您不应该这样做。