Supposons que j'ai deux classes avec des membres identiques de deux bibliothèques différentes:Castings entre les classes congruentes sans rapport avec
namespace A {
struct Point3D {
float x,y,z;
};
}
namespace B {
struct Point3D {
float x,y,z;
};
}
Lorsque je tente cross-casting, il a travaillé:
A::Point3D pa = {3,4,5};
B::Point3D* pb = (B::Point3D*)&pa;
cout << pb->x << " " << pb->y << " " << pb->z << endl;
Dans quelles circonstances est-ce garanti pour fonctionner? Toujours? S'il vous plaît noter qu'il serait hautement indésirable de modifier une bibliothèque externe pour ajouter un pragma d'alignement ou quelque chose comme ça. J'utilise g ++ 4.3.2 sur Ubuntu 8.10.
Si vous avez pa, pourquoi est-ce que vous avez besoin pb? Puisque n'importe quel endroit que vous utiliseriez pb pourrait simplement avoir & pa. Je ne suis pas sûr d'être clair sur le raisonnement ... – ezpz