在我的3d图形程序中,我可以编写我的类来使用float
或double
来表示实数。我希望能够在编译时轻松做出选择。我看到两个选择:
1)将所有类更改为以浮点类型为参数的模板。我的几乎所有课程都需要更改为模板。
2)创建一个typedef(例如typedef float real;
),然后确保我在整个课程中只使用real
。
我现在处于可以对现有代码进行两项更改的位置。这样做是否有任何成语,或者您认为上述任何一种选择都有问题吗?
答案 0 :(得分:3)
在我看来,模板对于这种情况来说是过度的(编译时间更长?),typedef就足够了,同时也保留了类型安全性和可读性。
GLM Maths库也选择了typedef,例如: GLM Repository
答案 1 :(得分:1)
有一个或多个指南:使用typedef。
MISRA C ++编码标准等标准为此定义了一条咨询规则(规则3-9-2)
应该使用typedefs 来表示大小和签名 基本数字类型
可能还有其他标准暗示相同的行为。 Afaik Win API使用typedef(WORD,DWORD等)来执行此操作。