在C++中创建新类型

use*_*122 20 c++ typedef

在C++中使用typedef可为类型创建别名.

所以:

typedef double Length;
typedef double Mass;
Run Code Online (Sandbox Code Playgroud)

创建两个可以混合的别名.换句话说,我们可以将Mass类型的值传递给期望值类型为Length的函数.

是否有轻量级的创建新类型的方法?我希望它们在下面是双重但是"不同",以便不能用它来代替另一个.

我更喜欢比创建新类或结构更轻松的东西.另外,我知道boost中的lib维度.这比我需要的更复杂,做得更多.

Bil*_*eal 19

BOOST_STRONG_TYPEDEF似乎是为你正在寻找的东西设计的.我相信它通过创建一个类并重载运算符使其行为类似于内置类型来实现它的魔力,但我没有看过它的实现.


Ken*_*oom 11

虽然BOOST_STRONG_TYPEDEF是一个非常简单的解决方案,但如果你将长度和质量混合到更复杂的单元中(例如在物理科学中),那么你可能想要使用Boost.Units.