0
포인터를 사용하는 동일한 유형의 멤버 변수를 반복하는 구체적인 경우가 발생하는지 궁금합니다. 멤버 패킹/패딩은 구현 정의이지만, (gcc, clang, Visual Studio) 구현을 시도해 볼 때 실패 할 수는 없습니다. 예를 들면 다음과 같은 실패 할 수 있습니다배열로서의 C++ 클래스 멤버 패킹 실패 사례
경우라도, 모든 성공 :
#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'는 동일한 접근 제어 (private)를 가지므로'herp'는 더 높은 주소에 있어야합니다. – bames53