我想知道是否存在使用指针迭代相同类型的成员变量会失败的具体情况?我知道成员打包/填充是实现定义的,但在我尝试过的实现(gcc、clang 和 Visual Studio)中,我不能让它失败。
即使是可能失败的情况,例如以下情况,也都成功了:
#pragma pack(16)
struct MyStruct
{
char firstChar;
char mySecondChar;
char thirdChar;
};
class MyContainerStruct
{
public:
uint64_t big;
MyStruct z1;
MyStruct z2;
} gStruct;
main()
{
MyStruct *pStruct = &(gStruct.z1); // Start with gStruct.z1
pStruct++; // Iterate to gStruct.z2
cout << pStruct->myThirdChar;
}
谁能找到迭代相同类型的类成员失败的情况?