避免类型混淆与现代C ++中某些数量的平方(或第n根等)

时间:2016-08-29 04:34:17

标签: c++

在引入之后,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类型,但是同样适用于Speedstd::chrono::high_resolution_clock::time_point的函数的一般原则是什么?

1 个答案:

答案 0 :(得分:2)

如果您真的关心数量的强类型,请使用Boost.Units或编写您自己的单位库。

否则,只需在进行动能计算时将SpeedMass值转换为实数,然后将得到的实数转换为Energy值或其他值。在计算的一个微小的中间阶段你没有使用“正确”类型并不是什么大问题。