如何编写类层次结构以轻松切换浮点类型?

时间:2014-05-20 13:15:59

标签: c++ templates floating-point typedef

在我的3d图形程序中,我可以编写我的类来使用floatdouble来表示实数。我希望能够在编译时轻松做出选择。我看到两个选择:

1)将所有类更改为以浮点类型为参数的模板。我的几乎所有课程都需要更改为模板。

2)创建一个typedef(例如typedef float real;),然后确保我在整个课程中只使用real

我现在处于可以对现有代码进行两项更改的位置。这样做是否有任何成语,或者您认为上述任何一种选择都有问题吗?

2 个答案:

答案 0 :(得分:3)

在我看来,模板对于这种情况来说是过度的(编译时间更长?),typedef就足够了,同时也保留了类型安全性和可读性。

GLM Maths库也选择了typedef,例如: GLM Repository

答案 1 :(得分:1)

有一个或多个指南:使用typedef。

MISRA C ++编码标准等标准为此定义了一条咨询规则(规则3-9-2)

  应该使用

typedefs 来表示大小和签名   基本数字类型

可能还有其他标准暗示相同的行为。 Afaik Win API使用typedef(WORD,DWORD等)来执行此操作。