将vector3强制转换为vector2 c ++的指针魔术

时间:2018-03-28 13:22:51

标签: c++ casting macros box2d

我有两种类型的矢量表示,我正在努力解决如何在两者之间进行转换的问题。我的解决方案是使用这个宏:

#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;

分别

你会考虑这样做吗?制作某种可在两种类型之间转换的实用函数会更合适吗,你能否提出另一个更合适的解决方案来解决这个问题?

0 个答案:

没有答案