Bjarne Stroustrup 建议使用反映真实概念(单位等)的类型,而不是使用原语。例如here,他建议使用“Point”类型而不是两个整数。
这种方法的好处是显而易见的。这意味着编译器可以确保参数具有相同的概念类型,而不仅仅是内存中的相同表示。Stroustrup 给出的一个例子是确保物理值采用相同的单位。
我的问题是如何在实践中做到这一点。创建一个新的 type 类并不难Point
,等等,但是我包括一个 3rd 方库,它有它自己的Point
对象,当然不能从我的一个构建。如果我包含第二个库,然后包含第三个库,问题就会成倍增加。
人们在实践中对这个问题采取了哪些方法?有没有优雅的解决方案?