0
我想知道是否有一個具體的情況下,使用指針迭代相同類型的成員變量會失敗?我知道成員封裝/填充是實現定義的,但在我嘗試過的實現中(gcc,clang和Visual Studio),我無法讓它失敗。C++類成員作爲數組,打包失敗case
即使情況可能是有可能失敗,如下面,所有的成功:
#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;
}
任何人都可以在其中找到迭代的同類型故障類成員的情況下?
我相信關於「herp」的評論是不正確的。 9.2/14指出具有相同訪問控制的成員按順序分配; 'herp'和'anotherField'具有相同的訪問控制(私有),所以'herp'必須位於更高的地址。 – bames53