在引入之后,these recommendations for how to program in C++立即开始哲学断言,即应该"直接在代码中表达想法" 。在我谈到这个之前,这听起来是个好主意:
Speed s; // there will be one single value
std::vector<Mass> m; // there may be millions/billions of values
ComputeTotalKineticEnergy();
如果有很多群众,那么正常的&#34;半智能&#34;物理定律适用,将(隐含的,必要的)循环之外的速度平方于质量向量是有意义的。但是Speed s
变量的类型一次平方是什么?没有直接在代码中表达想法的概念&#34; 会在您想要计算对数或第n个根或类似的时刻导致问题?在这种情况下,可以定义(丑陋的)SpeedSquared
类型,但是同样适用于Speed
和std::chrono::high_resolution_clock::time_point
的函数的一般原则是什么?
答案 0 :(得分:2)
如果您真的关心数量的强类型,请使用Boost.Units或编写您自己的单位库。
否则,只需在进行动能计算时将Speed
和Mass
值转换为实数,然后将得到的实数转换为Energy
值或其他值。在计算的一个微小的中间阶段你没有使用“正确”类型并不是什么大问题。