假设我有两个来自两个不同库的相同成员的类:
namespace A {
struct Point3D {
float x,y,z;
};
}
namespace B {
struct Point3D {
float x,y,z;
};
}
Run Code Online (Sandbox Code Playgroud)
当我尝试交叉投射时,它有效:
A::Point3D pa = {3,4,5};
B::Point3D* pb = (B::Point3D*)&pa;
cout << pb->x << " " << pb->y << " " << pb->z << endl;
Run Code Online (Sandbox Code Playgroud)
在哪种情况下这保证有效?总是?请注意,编辑外部库以添加对齐编译指示或类似的东西是非常不受欢迎的.我在Ubuntu 8.10上使用g ++ 4.3.2.