此代码有一个整洁的错误。
错误状态:Narrowing conversion from 'double' to 'float'
在xPos()内显示x_pos的位置;在底部的功能。
有人可以解释为什么以及如何纠正吗?
//grab the current position
double x_pos = clownfish->xPos();
// move the fish 500pixels/sec in the right direction
// delta time is measured in milliseconds, so divide by 1000 and multiply
x_pos += 500 * (game_time.delta.count() / 1000.f);
// update the position of the clown fish
clownfish->xPos(x_pos);
最佳答案
有人可以解释为什么是这样以及如何纠正它吗?
缩小:浮点数小于两倍,类似于int8_t小于int16_t。最大浮点比最大的浮点小很多。
另请注意:较小的int将自动神奇地提升为较大的int。同样,您的编译器也没有反对“ double x_pos = clownfish-> xPos();”,double总是足够大以包含浮点数。
如何纠正:
如果您有信心浮动(较小的浮动)足以满足您的需要,或者您不允许更改小丑鱼代码,那么您可以考虑使用强制转换。
clownfish->xPos(static_cast<float>(x_pos)).
如果您愿意且不受禁止地更改clownfish代码,请确保clownfish x位置(即“ clownfish-> xPos()”返回的值)为双精度,并且函数“ clownfish-> xPos()”返回一个双。