Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何编写类层次结构来轻松地在浮点类型之间切换?_C++_Templates_Floating Point_Typedef - Fatal编程技术网

C++ 如何编写类层次结构来轻松地在浮点类型之间切换?

C++ 如何编写类层次结构来轻松地在浮点类型之间切换?,c++,templates,floating-point,typedef,C++,Templates,Floating Point,Typedef,在我的3d图形程序中,我可以编写类来使用float或double来表示实数。我希望能够在编译时轻松地做出选择。我看到两种选择: 1) 将所有类更改为以浮点类型为参数的模板。几乎我所有的类都需要更改为模板 2) 创建一个typedef(例如typedef float real;),然后确保我在整个课程中只使用real 我现在可以对现有代码进行两项更改。有没有现成的习惯用法可以这样做,或者您认为上面的选择有什么错误?在我看来,模板在这种情况下太过复杂了(编译时间更长?),typedef就足够了,还可

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

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

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


我现在可以对现有代码进行两项更改。有没有现成的习惯用法可以这样做,或者您认为上面的选择有什么错误?

在我看来,模板在这种情况下太过复杂了(编译时间更长?),typedef就足够了,还可以保持类型安全性和可读性

GLM数学库还选择了typedefs,例如:

在我看来,模板在这种情况下(更长的编译时间?)是多余的,一个typedef就足够了,还可以保持类型安全性和可读性

GLM数学库还选择了typedefs,例如:

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

标准如MISRA C++编码标准定义了一个咨询规则(规则3-9-2)< /P> 应在适当位置使用指示大小和符号的typedef 基本的数字类型


可能还有其他标准暗示同样的行为。Afaik Win API使用typedef(WORD、DWORD等)来实现这一点。

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

标准如MISRA C++编码标准定义了一个咨询规则(规则3-9-2)< /P> 应在适当位置使用指示大小和符号的typedef 基本的数字类型

可能还有其他标准暗示同样的行为。Afaik Win API使用typedefs(WORD、DWORD等)来实现这一点