Supongamos que tengo dos clases, con idénticos de dos bibliotecas diferentes:Conversiones entre clases congruentes no relacionadas
namespace A {
struct Point3D {
float x,y,z;
};
}
namespace B {
struct Point3D {
float x,y,z;
};
}
Cuando intento cruzada de fundición, funcionó:
A::Point3D pa = {3,4,5};
B::Point3D* pb = (B::Point3D*)&pa;
cout << pb->x << " " << pb->y << " " << pb->z << endl;
¿En qué circunstancias es este garantizado para trabajar? ¿Siempre? Tenga en cuenta que sería altamente indeseable editar una biblioteca externa para agregar un pragma de alineación o algo así. Estoy usando g ++ 4.3.2 en Ubuntu 8.10.
Si tiene pa, qué es lo que necesita pb? Dado que cualquier lugar donde usarías pb podría simplemente tener & pa. No estoy seguro de tener claro el razonamiento ... – ezpz