Giả sử tôi có hai lớp với các thành viên giống hệt nhau từ hai thư viện khác nhau:Đúc giữa các lớp đồng dư không liên quan
namespace A {
struct Point3D {
float x,y,z;
};
}
namespace B {
struct Point3D {
float x,y,z;
};
}
Khi tôi cố gắng cross-đúc, nó làm việc:
A::Point3D pa = {3,4,5};
B::Point3D* pb = (B::Point3D*)&pa;
cout << pb->x << " " << pb->y << " " << pb->z << endl;
Theo đó tình hình là thế này đảm bảo để làm việc? Luôn luôn? Xin lưu ý rằng nó sẽ là rất không mong muốn để chỉnh sửa một thư viện bên ngoài để thêm một pragma liên kết hoặc một cái gì đó như thế. Tôi đang sử dụng g ++ 4.3.2 trên Ubuntu 8.10.
Nếu bạn có pa, tại sao là nó mà bạn cần pb? Vì bất cứ nơi nào bạn sẽ sử dụng pb chỉ đơn giản là có & pa. Tôi không chắc chắn tôi đang rõ ràng về lý do ... – ezpz