Мне нужно было объявить объединение внутри структуры, как указано ниже:
struct MyStruct
{
int m_DataType;
DWORD m_DataLen;
union theData
{
char m_Buff [_MAX_PATH];
struct MyData m_myData;
} m_Data;
};
Изначально я попытался получить доступ к данным объединения следующим образом (до того, как я добавил объявление m_Data):
MyStruct m_myStruct;
char* pBuff = m_myStruct.theData::m_Buff;
Это компилирует, но возвращает pBuff указатель на начало структуры MyStruct, что заставило меня перезаписать элементы m_DataType & m_DataLength, когда я думал, что записываю в буфер m_Buff.
Я использую Visual Studio 2008. Кто-нибудь может объяснить это неожиданное поведение? Спасибо.