У меня есть класс, который выглядит так:
class myType
{
union {
float data[4];
other_vector4_type v
} ;
typedef union {
float data[4];
other_vector4_type v
} myType-internal_t;
<various member functions, operator overloads>
}
Теперь я хочу использовать этот тип в моем буфере вершин, но sizeof()
не так, как ожидалось. Я выровнял класс до 16 байт.
sizeof(myType)
дает 64.
sizeof(myType::myType-internal_t)
дает 32.
Я прочитал довольно много статей о выравнивании данных, но я не знаю, где я использую дополнительные данные. Я попытался удалить собственный конструктор, но он остался прежним, замена ключевого слова class на struct
также не меняет его (я не понимаю, для чего он, как это происходит!)
Это раздражает, сейчас я буду использовать внутренний тип, так как я не буду часто касаться данных, но было бы здорово, чтобы класс работал так, как я хочу.