我有两个在给定帧中定义点和向量的结构。
struct point3D
{
float x;
float y;
float z;
};
struct vector3D
{
float x;
float y;
float z;
};
之所以将它们定义为两个不同的结构,是因为还有其他函数将点(point3D
)与向量(vector3D
)区别对待,因为它们具有相同类型的成员变量< / p>
我想知道是否有一种方法可以将其中一个转换成另一个说法:
point3D variable1;
vector3D variable2;
variable2=(vector3D)variable1;
答案 0 :(得分:2)
你可以做到
struct vector3D
{
float x;
float y;
float z;
};
struct point3D
{
float x;
float y;
float z;
explicit operator vector3D() {
return {x, y, z};
}
};
答案 1 :(得分:0)
即使我确定你不是外科医生,我也会给你刀。 Karsten建议-在评论中-从向量得出点。如果还不行,那就继续作弊:正确的演员是reinterpret_cast
。
point3D variable1;
vector3D variable2;
variable2=reinterpret_cast<vector3D&>(variable1);
但是那是C ++。如果需要C样式强制转换,则采用指针强制转换:
variable2=*(vector3D*)(void*)&variable1;
不建议使用上述两种解决方案中的任何一种。我会考虑重新设计一下,如果我穿上你的鞋子。