我有两种类型的矢量表示,我正在努力解决如何在两者之间进行转换的问题。我的解决方案是使用这个宏:
#define danger_cast(type_to_cast_to, what_to_cast) *(type_to_cast_to*)&(what_to_cast)
使用方法如下:
Vec3 old_vector(3.0f, 1.0f, 0.0f);
b2Vec2 vector = danger_cast(b2Vec2, old_vector);
这是有效的,因为两种矢量类型的成员变量的顺序相同。那就是:
float x,y,z;
和
float x,y;
分别
你会考虑这样做吗?制作某种可在两种类型之间转换的实用函数会更合适吗,你能否提出另一个更合适的解决方案来解决这个问题?