¿Cómo especifico el tamaño de una clase en C++?
Mi tarea es crear una clase que implementa números de punto flotante.
El tamaño de la clase debe ser exactamente de 3 bytes:
1 bit para el signo
6 bits para el exponente
17 bits para la mantisa
Intenté implementar la clase usando campos de bits, pero el tamaño es de 4 bytes:
class NumeroPuntoFlotante
{
private:
unsigned int signo : 1;
unsigned int exponente : 6;
unsigned int mantisa : 17;
};
davy.ai
Para asegurar que la clase tenga un tamaño exacto de 3 bytes, los bit-fields por si solos pueden no ser suficientes. Una solución posible podría ser usar unión en conjunto con los bit-fields, como sigue:
En esta implementación, la unión permite que la misma memoria sea interpretada de diferentes maneras, ya sea como una estructura de bit-fields o como un arreglo de bytes. La estructura especifica el orden de los bit-fields y el arreglo de bytes asegura que el tamaño de la unión sea exactamente de 3 bytes. El uso de la unión puede requerir cuidado adicional al acceder a los datos, pero provee una manera de lograr la restricción de tamaño deseada.