Ich habe eine Reihe von Strukturen, die ungefähr < /p>
aussehen
Code: Select all
struct A
{
int x;
int y;
};
struct B
{
int x;
int y;
int z;
};
struct Top
{
A a;
B b;
int* getPtr() { return &a.x; }
};
Die Absicht besteht darin, auf alle Felder von Tops A und B zugreifen zu können, wobei ein Zeiger als-wenn es der Zeiger auf das erste Element im Array war. Ich kann garantieren, dass alle nicht statischen Datenmitglieder dieser Klassen int sind. Ich muss mir keine Sorgen um den Fall machen, in dem das Komplizierter die Polsterung hinzufügen muss, da ein Feld int war und eines doppelt war (ich mache mir mehr Sorgen darüber, dass der Compiler diese Polsterung nicht hinzufügen darf). Was ich gerne wissen möchte, ist die minimalen Behauptungen, die ich auf A, B und oben machen müsste, um sicherzustellen, dass der Speicher auf diese Weise festgelegt wird.
Ich möchte vermeiden, dass ich dem strengen Aliasing im Vergangenheit fällt. Ich denke nicht>